The Kenya Rule: Engineering for the Edge
The Kenya Rule
“If it doesn’t work on a solar-powered phone in rural Kenya, it doesn’t work.”
A man in Kilifi pulls his phone off a car battery at dawn. The screen is cracked. The signal flickers between E and nothing. He checks his balance. He checks the weather. He checks whether his funds made it through the night.
He is not a charity case. He is the spec.
A Phone on a Car Battery
Kilifi County. The grid reaches about half the homes here. The other half run on whatever they can scrounge. A car battery wired to a Chinese charge controller. A panel nailed to a corrugated roof. The phone is a Tecno from 2019 with 2GB of RAM and a SIM card that costs 3 shillings per megabyte.
The protocol that works here works everywhere. The protocol that needs a data center and a fiber line and a 200-watt machine is not a protocol. It is a lease.
What the Edge Looks Like
| Resource | Kenya Rule Limit | Typical “Web3” Project |
|---|---|---|
| RAM | < 10 MB | 4+ GB (Electron apps) |
| Storage | < 100 MB | 1+ TB (blockchain nodes) |
| Bandwidth | < 1 KB/s | Assumes fiber |
| Power | Intermittent | Always-on servers |
These are not aspirational targets. They are the physics of the edge. A 2015 Android phone on a 2G tower with a solar panel that goes dark at 7 PM. If your stack cannot run on that, you are not building infrastructure. You are building a clubhouse.
What This Means
No blockchain bloat. Most “sovereign” systems demand you sync a terabyte of chain state before you can do anything useful. That is not sovereignty. That is a full-time job with a storage bill.
Libertaria takes the submarine approach. Anchor hashes to Bitcoin or Kaspa if you want the audit trail. Keep state in libmdbx, under 10MB. Sync only what you need with sparse Merkle trees. The node stays light. The user stays mobile.
No JSON. No Protocol Buffers. The wire format is binary, schema-based, zero-copy:
// LWF (Libertaria Wire Format)
// Binary, schema-based, zero-copy
const Message = struct {
version: u8,
msg_type: MessageType,
payload: []u8,
};
The protocol detects its environment and adapts:
// Detect bandwidth, adapt skin
if (bandwidth < 10_kb_s) {
skin = .MIMIC_DNS; // Low bandwidth
} else if (dpi_detected) {
skin = .MIMIC_QUIC; // Evasion
} else {
skin = .RAW; // Direct
}
Three dependencies. Zig standard library. libmdbx for embedded storage. libsodium for crypto. The binary is about 500KB. No Docker. No Kubernetes. No cloud API that stops working when the startup pivots.
Why the Edge Matters
Centralized systems are built on the assumption of infinite resources. Spin up more instances. Users have 16GB of RAM now. Bandwidth is cheap.
This is how you get locked in. The resource requirements are absurd. You cannot self-host because the stack was designed for AWS, not for a phone.
The Kenya Rule cuts through that. Self-hosting becomes trivial. Edge deployment becomes possible. Censorship resistance stops being a whitepaper claim and starts being physics. Lightweight nodes are hard to kill. A thousand phones on a thousand car batteries beat a hundred data centers.
A Node on a Battery
# Compile for ARM (Raspberry Pi, old phones)
zig build -Dtarget=aarch64-linux-musl
# Run on solar-powered node
./libertaria-node --config=minimal.toml
# Memory usage: 8MB
# Storage usage: 45MB
# Bandwidth: ~500 bytes/hour (heartbeat)
That is not a demo. That is the target.
The Anti-Pattern
You will see projects that claim “sovereignty” and then tell you the minimum requirements are 32GB of RAM and an SSD. They will say they will decentralize later. They are data centers wearing a mask. Watch for the spec sheet. It tells you everything.
The Test
Can you run your infrastructure on a 2015 Android phone? On solar power? On a 2G connection? Without a single cloud API?
If the answer is no, you are building for the people who already have options. The people who need sovereignty the most are the ones with the least hardware.
The forge burns. Even on solar power.