Guiding Developer: allytag
Project model: Open-source, hardware-backed community communications network
Primary objective: Maintain local communications and distribute available external connectivity across a geographic area during a total cellular or ISP blackout.
Contributor objective: Split the system into independently buildable hardware, firmware, networking, backend, Android, monitoring, and deployment modules.
Satellite Backhaul A ───────────┐
│
Long-Range RF Backhaul B ───────┼── Edge Gateway Layer
│ │
Independent Backhaul C ─────────┘ │
▼
Routed Rooftop Backbone
│ │ │
▼ ▼ ▼
District A District B District C
│ │ │
▼ ▼ ▼
Wi-Fi APs Wi-Fi APs Wi-Fi APs
│ │ │
└──── Community Users ────┘
Additional planes:
Rooftop Backbone ── Local DNS / Messaging / Maps / Voice / Content Cache
LoRa Network ────── SOS / Text / Coordinates / Network Control
Phone DTN ───────── Store-Carry-Forward for disconnected local edges
The network is divided into five functional planes:
- Backhaul plane — brings external connectivity into the area.
- Backbone plane — moves traffic between rooftop and district nodes.
- Access plane — provides standard Wi-Fi to user devices.
- Local-service plane — keeps essential services available inside the network.
- Emergency plane — carries small, high-priority messages over LoRa and delay-tolerant phone links.
Do not use one central Genesis Node. Deploy multiple active gateways at physically separated sites.
Gateway A: Satellite terminal at Site 1
Gateway B: Directional RF bridge at Site 2
Gateway C: Independent satellite, fibre, microwave, or other backhaul at Site 3
Each gateway contains:
- Backhaul modem or radio.
- Edge router.
- Local service replica.
- Routing daemon.
- Real connectivity health checker.
- Traffic-shaping service.
- Monitoring agent.
- Independent battery and power subsystem.
For independent backhauls with individual availability
1-\prod_{i=1}^{n}(1-A_i) $$
For two backhauls with 95% availability:
99.75% $$
To account for a shared-site failure probability
(1-q) \left[ 1-\prod_{i=1}^{n}(1-A_i) \right] $$
For:
97.755% $$
The engineering implication is direct:
Backhaul diversity without site diversity is incomplete.
All healthy gateways should advertise usable routes simultaneously.
A gateway route weight can be calculated as:
\frac{ C_g \cdot R_g \cdot B_g }{ 1+\alpha L_g+\beta J_g+\gamma P_g } $$
where:
-
$C_g$ = measured available capacity. -
$R_g$ = recent success ratio. -
$B_g$ = battery and power-health multiplier. -
$L_g$ = latency. -
$J_g$ = jitter. -
$P_g$ = packet-loss ratio. -
$\alpha,\beta,\gamma$ = tuning coefficients.
Traffic allocation across
\frac{W_g}{\sum_{i=1}^{k}W_i} $$
where
Connectivity must not be represented as a Boolean.
DOWN
CAPTIVE
CONTROL_ONLY
DEGRADED
USABLE
SATURATED
A gateway becomes USABLE only after completing:
- An authenticated control request.
- A real upload probe.
- A real download probe.
- A server acknowledgement.
- A latency and packet-loss measurement.
Suggested probe sizes:
Control probe: 256–1,024 bytes
Upload probe: 32–128 KB
Download probe: 32–128 KB
Withdraw a route when:
where
Restore it only when:
and:
This hysteresis prevents route flapping.
Suggested initial values:
Probe interval: 5 seconds
Failure threshold: 3 consecutive failures
Restore threshold: 5 consecutive successes
Minimum healthy hold: 20 seconds
A neighbouring area with connectivity can feed the network using a point-to-point directional radio bridge.
For distance
For a 30 km link at 5.8 GHz:
92.45+ 20\log_{10}(30)+ 20\log_{10}(5.8) \approx137.3\text{ dB} $$
L $$
Example:
Transmit power: 23 dBm
Transmit antenna gain: 30 dBi
Receive antenna gain: 30 dBi
Cable/system losses: 4 dB
-58.3\text{ dBm} $$
Link margin:
If the selected modulation requires
The project should define a minimum accepted fade margin before a link is commissioned.
Suggested target:
Minimum design margin: 15–25 dB
The first Fresnel-zone radius is:
For:
Targeting 60% clearance:
A deployment planner should generate:
- Terrain profile.
- Rooftop and tower-height requirement.
- Fresnel clearance plot.
- Estimated receive level.
- Estimated modulation.
- Fade margin.
- Expected usable throughput.
A link passes commissioning only when it meets all selected thresholds:
RSSI within design range
SNR above modulation threshold
Packet loss below threshold
Latency stable under load
Upload and download capacity verified
48-hour burn-in completed
Automatic failover tested
Do not place the entire city in one Layer-2 broadcast domain.
Use a hierarchy:
Layer 1: External backhaul sites
Layer 2: Directional rooftop backbone
Layer 3: District distribution nodes
Layer 4: Standard Wi-Fi access points
Recommended protocol split:
Between districts: Layer-3 routing using Babel, OSPF, or IS-IS
Inside a small pod: 802.11s or batman-adv
User access: Standard Wi-Fi AP mode
Emergency application: Encrypted overlay
A district pod is a bounded local mesh containing approximately:
3–20 rooftop nodes
1–3 local service replicas
1 or more district uplinks
Multiple user access points
Each pod should have its own:
- IP prefix.
- Routing area or metric boundary.
- DHCP service.
- Local DNS cache.
- Monitoring namespace.
- Traffic quota.
- Failure-isolation policy.
Preferred three-radio design:
Radio 1: Directional primary backbone
Radio 2: Alternate backbone or secondary path
Radio 3: Local user access
Recommended components:
- OpenWrt-capable router or small x86/ARM computer.
- Managed PoE switch.
- Directional backbone radios.
- Separate Wi-Fi access radio.
- Battery monitor.
- Solar or mains charge controller.
- Temperature sensor.
- Encrypted management interface.
- Weatherproof enclosure.
- Surge protection.
- Remote reset controller.
For physical goodput
For:
Separate radios, directional antennas, separate channels, and spatial reuse are therefore primary design requirements.
For every backbone link
where:
-
$D(l)$ = users or downstream nodes whose traffic crosses link$l$ . -
$d_u$ = design bandwidth assigned to user or node$u$ . -
$\Gamma$ = overhead and growth factor.
Suggested starting range:
Links close to edge gateways must be provisioned for aggregate traffic from multiple districts.
Model the backbone as a directed graph:
Each edge
For each traffic demand
The aggregate capacity constraint is:
A contributor-built planning tool should solve:
- Shortest reliable path.
- Maximum flow.
- Link overload detection.
- Failure rerouting.
- Gateway balancing.
- District isolation.
- Capacity forecasting.
A composite routing cost:
a\frac{1}{c_e} + b l_e + c p_e + d j_e + e q_e $$
where:
-
$c_e$ = usable link capacity. -
$l_e$ = latency. -
$p_e$ = packet-loss ratio. -
$j_e$ = jitter. -
$q_e$ = queue occupancy. -
$a,b,c,d,e$ = configurable weights.
Users should connect through standard Wi-Fi without requiring a special mesh application.
Each access node should provide:
- Community SSID.
- Emergency-only SSID.
- Optional contributor/maintenance SSID.
- Client isolation where required.
- Rate limits.
- Captive information portal.
- Local service discovery.
- Automatic roaming support.
If total working external backhaul is
For:
A fair scheduler should allocate traffic by class rather than by unrestricted first-come-first-served demand.
Priority 1: SOS, emergency coordination, routing control
Priority 2: Text, critical APIs, authentication, signalling
Priority 3: Compressed photos, documents, maps
Priority 4: Ordinary web access
Priority 5: Large downloads and video
Suggested weighted scheduler:
Example weights:
Priority 1: 100
Priority 2: 50
Priority 3: 20
Priority 4: 5
Priority 5: 1
Let:
-
$B_c$ = capacity assigned to class$c$ . -
$N_c$ = active users in class$c$ .
Then:
\min \left( R_{c,\max}, \frac{B_c}{N_c} \right) $$
This protects emergency services while retaining predictable access for ordinary users.
Deploy local replicas so common traffic remains inside the community network.
Required services:
- Local DNS resolver.
- Emergency information portal.
- Local messaging server.
- Offline map server.
- File and document exchange.
- Content cache.
- Local authentication.
- Local status dashboard.
- Voice or push-to-talk signalling.
- Device and node update mirror.
- Monitoring and alerting.
Each district should operate a recursive or caching resolver.
Recommended design:
Client
│
▼
District DNS Cache
│
├── Local service zone
├── Cached public records
└── Upstream resolver through any healthy gateway
Local service names should resolve independently of external DNS.
Example:
portal.community
maps.community
chat.community
status.community
voice.community
files.community
For service
A basic replica placement score:
aD_v + bC_v + cP_v + dN_v $$
where:
-
$D_v$ = demand near node$v$ . -
$C_v$ = compute and storage capacity. -
$P_v$ = power availability. -
$N_v$ = network centrality.
Select nodes with the highest score while enforcing physical separation.
Use eventual consistency for non-transactional community services.
Recommended model:
Local writes
→ append-only event log
→ replicated between district servers
→ conflict resolution
→ compressed backhaul synchronization
Every event should contain:
Event ID
Origin node
Logical timestamp
Object type
Operation type
Content hash
Encrypted payload
Signature
Expiry policy
LoRa is used for:
- SOS messages.
- Short text.
- GPS coordinates.
- Node-health reports.
- Network-control alerts.
- Backhaul-status summaries.
- Store-and-forward emergency communication.
It is not used for normal web traffic or media transfer.
For city area
For:
Introduce a deployment multiplier
kN_{\min} $$
Suggested planning range:
Therefore:
for the example planning assumptions.
For an airtime allowance
For a 1% airtime budget:
Example packet airtime:
SF7: approximately 61 ms
SF10: approximately 371 ms
Then:
These values must be reduced for:
- Acknowledgements.
- Retransmissions.
- Routing overhead.
- Collisions.
- Longer payloads.
- Control packets.
If every message is forwarded by
Use controlled replication instead of universal flooding.
Recommended controls:
- Unique message IDs.
- Duplicate suppression.
- Hop limits.
- Expiry time.
- Priority queues.
- Selective acknowledgements.
- Relay quotas.
- Neighbour-quality scoring.
- Scheduled transmission windows.
- Store-carry-forward.
Version 1 byte
Message type 1 byte
Flags 1 byte
Sender ID 4 bytes
Sequence number 3 bytes
Timestamp 4 bytes
Latitude/longitude 8 bytes
Hop count 1 byte
Expiry 2 bytes
Payload 24–64 bytes
Authentication tag 8–16 bytes
Typical packet size:
0x01 SOS
0x02 Position update
0x03 Short text
0x04 Network status
0x05 Node health
0x06 Gateway availability
0x07 Acknowledgement
0x08 District announcement
For relay candidate
eU_v $$
where:
-
$Q_v$ = link quality. -
$E_v$ = remaining energy. -
$H_v$ = estimated progress toward destination. -
$L_v$ = recent packet loss. -
$U_v$ = channel utilization.
Only the highest-scoring eligible relays should forward a packet.
Phones can extend connectivity beyond fixed nodes through:
- Wi-Fi Aware.
- Nearby Connections.
- Bluetooth Low Energy discovery.
- Store-carry-forward.
- Local SOS.
- Opportunistic synchronization.
The phone network is an edge extension, not the principal backbone.
{
"messageId": "256-bit-random-id",
"senderPublicKey": "base64-key",
"destination": "user-or-channel",
"createdAt": 1784540000,
"expiresAt": 1784543600,
"priority": 1,
"hopLimit": 8,
"contentHash": "sha256",
"payload": "encrypted-data",
"signature": "digital-signature"
}When two phones connect:
- Exchange protocol versions.
- Exchange compact inventories of message IDs.
- Identify missing messages.
- Prioritize SOS and control messages.
- Transfer encrypted payloads.
- Verify hashes and signatures.
- Store valid messages.
- Forward according to replication budget.
- Delete expired content.
Each message receives a replication budget
Binary spray:
When a node has one remaining copy, it waits for:
- The destination.
- A fixed access point.
- A verified internet gateway.
- An authorized collector.
For a file of size
Each chunk contains:
File ID
Chunk index
Total chunks
Chunk hash
File root hash
Payload
Chunk size should satisfy:
where:
-
$G$ = measured local-link goodput. -
$t_c$ = conservative contact duration. -
$\eta$ = safety factor.
For an
Decode probability:
\sum_{i=k}^{n} \binom{n}{i} p^i(1-p)^{n-i} $$
where
The encoder should dynamically choose
- Contact reliability.
- Number of available peers.
- File priority.
- Storage budget.
- Delivery deadline.
- Network congestion.
Assume:
Router and CPU: 8 W
Backbone radio: 8 W
Access radio: 6 W
Losses and auxiliaries: 3 W
Total: 25 W
Daily energy:
600\text{ Wh/day} $$
For two days of battery autonomy and 80% usable depth:
1{,}500\text{ Wh} $$
With four peak-sun-hours and 70% total system efficiency:
Suggested initial node design:
Solar panel: 250–300 W
Battery: 1.5–2.0 kWh
Charge controller: MPPT
Power output: Regulated PoE
Protection: Low-voltage cutoff
Monitoring: Voltage, current, temperature, state of charge
Let:
-
$b_v$ = battery state of charge. -
$s_v$ = solar charging state. -
$p_v$ = node power draw.
Power-health multiplier:
w_p p_v $$
A node with low projected runtime should gradually increase its routing cost before shutdown.
Estimated runtime:
\frac{E_{\text{remaining}}}{P_{\text{average}}} $$
Every infrastructure node has:
- A unique node ID.
- A long-term signing key.
- A transport encryption key.
- A hardware or encrypted-software key store.
- A certificate signed by the community root.
- A revocation status.
Root authority
├── Infrastructure-node certificates
├── Operator certificates
├── Service certificates
└── Emergency-authority signing certificates
Use:
- Authenticated encryption for payload confidentiality and integrity.
- Digital signatures for authority announcements.
- Replay protection using sequence numbers and timestamps.
- Content hashes for chunks and files.
- Key rotation.
- Certificate revocation.
- Rate limiting per identity.
- Device enrollment with approval.
Routing updates should include:
Origin node
Sequence number
Timestamp
Route metric
Expiry
Signature
Nodes must reject:
- Invalid signatures.
- Old sequence numbers.
- Expired advertisements.
- Impossible metric jumps.
- Duplicate route updates.
- Unknown infrastructure identities.
Every infrastructure node should export:
CPU and memory
Device temperature
Battery voltage
Battery current
State of charge
Solar input
Backhaul state
Upload goodput
Download goodput
Latency
Jitter
Packet loss
Queue depth
Connected clients
Per-class bandwidth
Routing neighbours
Route changes
LoRa airtime
LoRa retries
Local-service health
Storage usage
A conservative gateway score:
p_g^- \cdot \frac{\log(1+G_g)} {(1+r_g/r_0)(1+l_g)} \cdot e^{-\lambda_a a_g} \cdot B_g $$
where:
-
$p_g^-$ = conservative lower bound on probe success. -
$G_g$ = measured goodput. -
$r_g$ = round-trip latency. -
$l_g$ = loss ratio. -
$a_g$ = age of last successful test. -
$B_g$ = power-health multiplier.
Critical: no district route, local service failure, battery near shutdown
High: backhaul degraded, backbone link loss, storage nearly full
Medium: rising packet loss, gateway saturation, elevated temperature
Low: software update available, capacity trend warning
The dashboard should display:
- Topology graph.
- Healthy and unhealthy links.
- Active gateway capacities.
- District user counts.
- Traffic by priority.
- Battery-runtime estimates.
- LoRa utilization.
- Local-service status.
- Historical reliability.
- Predicted capacity shortfalls.
community-resilient-network/
├── README.md
├── LICENSE
├── CONTRIBUTING.md
├── CODE_OF_CONDUCT.md
├── SECURITY.md
├── docs/
│ ├── architecture.md
│ ├── deployment-guide.md
│ ├── radio-planning.md
│ ├── power-planning.md
│ ├── routing.md
│ ├── security-model.md
│ ├── testing.md
│ └── bill-of-materials.md
├── firmware/
│ ├── openwrt/
│ ├── lora-node/
│ └── power-controller/
├── routing/
│ ├── gateway-health/
│ ├── route-controller/
│ ├── babel-config/
│ └── district-planner/
├── services/
│ ├── local-dns/
│ ├── emergency-portal/
│ ├── messaging/
│ ├── maps/
│ ├── voice/
│ └── content-cache/
├── mobile/
│ └── android-dtn/
├── backend/
│ ├── probe-server/
│ ├── synchronization/
│ └── identity/
├── monitoring/
│ ├── exporters/
│ ├── dashboards/
│ └── alerts/
├── simulation/
│ ├── topology/
│ ├── capacity/
│ ├── lora-airtime/
│ └── availability/
├── hardware/
│ ├── rooftop-node/
│ ├── gateway-site/
│ ├── lora-node/
│ └── power-system/
└── tests/
├── laboratory/
├── field/
├── failover/
└── performance/
Build:
- Authenticated upload/download probes.
- Gateway state machine.
- Route withdrawal API.
- Route restoration hysteresis.
- Capacity and reliability scoring.
- Active-active traffic weights.
Acceptance criteria:
- Detects a failed path within the configured threshold.
- Does not mark a network healthy from ping alone.
- Withdraws unusable routes.
- Restores routes without rapid flapping.
- Exposes machine-readable metrics.
Build a tool that accepts:
Site coordinates
Site elevations
Tower heights
Frequency
Transmit power
Antenna gains
Cable losses
Receiver sensitivity
Required fade margin
Outputs:
- Distance.
- FSPL.
- Fresnel-zone radius.
- Required clearance.
- Estimated receive level.
- Link margin.
- Pass/fail result.
- Human-readable report.
Build an OpenWrt image containing:
- Babel or OSPF.
- 802.11s or batman-adv for local pods.
- VLAN support.
- Traffic shaping.
- Health monitoring.
- Secure remote management.
- Automatic configuration backup.
- Signed update support.
Build containerized local services:
- DNS.
- Emergency portal.
- Messaging.
- Offline maps.
- File exchange.
- Status dashboard.
- Voice signalling.
Each service should run without external internet access.
Build:
- Compact binary packet protocol.
- Duplicate suppression.
- Controlled relay selection.
- Hop limits.
- Priority queues.
- Acknowledgements.
- Node-health telemetry.
- Phone-to-radio Bluetooth interface.
- Gateway bridge to local messaging.
Build:
- Wi-Fi Aware transport.
- Nearby Connections fallback.
- BLE discovery fallback.
- Store-carry-forward database.
- Message signing and encryption.
- Spray-and-Wait routing.
- Chunked media transfer.
- Fixed-node synchronization.
- Local SOS workflow.
Build firmware and hardware interfaces for:
- Battery voltage.
- Battery current.
- Solar current.
- Temperature.
- State-of-charge estimation.
- Low-voltage cutoff.
- Remote power cycling.
- Routing-cost adjustment based on runtime.
Build a simulator that models:
- Geographic node placement.
- Backbone capacities.
- Gateway availability.
- District demand.
- Link failures.
- Multi-path rerouting.
- LoRa airtime.
- Battery runtime.
- Phone mobility.
- DTN message delivery probability.
Deliverables:
- Architecture document.
- Packet formats.
- Routing interfaces.
- Gateway health API.
- Security model.
- Initial bill of materials.
- Simulation assumptions.
- Contributor guidelines.
Build:
2 edge gateways
4 rooftop nodes
2 district pods
4 Wi-Fi access points
5 LoRa nodes
3 Android test phones
1 local-service server
Tests:
- Gateway failover.
- Route reconvergence.
- Local DNS continuity.
- Priority traffic shaping.
- LoRa text delivery.
- DTN message exchange.
- Battery telemetry.
Build:
2 physically separated backhauls
10–20 rooftop nodes
3–5 district pods
20–50 LoRa nodes
Local service replicas
Public test access
Measure:
- Coverage.
- Capacity.
- Latency.
- Packet loss.
- User concurrency.
- Gateway balancing.
- Power runtime.
- Route stability.
- LoRa airtime.
- DTN delivery delay.
Add:
- Hierarchical Layer-3 routing.
- Multiple service replicas.
- Automated provisioning.
- Central and district monitoring.
- Signed software updates.
- Capacity forecasting.
- RF planning automation.
- Contributor deployment toolkit.
Publish:
- Hardware reference designs.
- OpenWrt images.
- LoRa firmware.
- Android application.
- Deployment calculator.
- Power-sizing calculator.
- RF link calculator.
- Network simulation templates.
- Test procedures.
- Operator handbook.
- Contributor onboarding guide.
| Test | Expected Result |
|---|---|
| One gateway becomes unavailable | New flows use remaining gateways |
| One rooftop link fails | Routing converges to an alternate path |
| One district loses external routes | Local district services remain reachable |
| External DNS is unavailable | Local community names continue resolving |
| Backhaul becomes saturated | Priority traffic remains responsive |
| Access point restarts | Clients reconnect to overlapping coverage |
| LoRa relay disappears | Alternate relays deliver eligible messages |
| Phone disconnects mid-transfer | Chunk transfer resumes from verified state |
| Battery state falls | Node routing cost increases before shutdown |
| Local server restarts | Replicated services restore state |
Measure:
Backhaul goodput
Backbone goodput
Per-hop capacity
Routing convergence time
Gateway failover time
Wi-Fi client capacity
Latency by traffic class
LoRa packet delivery ratio
LoRa airtime consumption
DTN delivery probability
Media reconstruction probability
Battery runtime
Solar recharge time
Initial targets for the pilot:
Gateway failure detection: ≤ 20 seconds
Backbone route reconvergence: ≤ 10 seconds
Local DNS response: ≤ 100 ms
Local messaging response: ≤ 500 ms
Priority-1 packet queue delay: ≤ 1 second under planned load
LoRa SOS delivery probability: ≥ 95% within the pilot coverage model
Service replica recovery: ≤ 60 seconds
Node battery autonomy: ≥ 48 hours at planned load
Monitoring visibility: 100% of infrastructure nodes
Targets should be configured by deployment profile and verified through reproducible tests.
Example response:
{
"gatewayId": "gw-site-01",
"state": "USABLE",
"capacityDownMbps": 180.5,
"capacityUpMbps": 35.2,
"latencyMs": 84,
"jitterMs": 12,
"packetLoss": 0.008,
"batteryPercent": 86,
"estimatedRuntimeMinutes": 1320,
"routeWeight": 0.74,
"lastValidatedAt": "2026-07-20T10:30:00Z"
}{
"nodeId": "roof-district-a-07",
"neighbours": 3,
"clientCount": 42,
"cpuPercent": 27,
"temperatureC": 54,
"batteryPercent": 78,
"solarWatts": 148,
"routes": 18,
"queueDepth": {
"priority1": 2,
"priority2": 6,
"priority3": 14,
"priority4": 30,
"priority5": 9
}
}message_version
message_type
message_id
sender_id
sequence_number
created_at
expires_at
priority
hop_limit
payload
authentication_tag
interface MeshTransport {
suspend fun startDiscovery()
suspend fun stopDiscovery()
suspend fun connect(peerId: String)
suspend fun disconnect(peerId: String)
suspend fun send(peerId: String, payload: ByteArray): TransferResult
fun observePeers(): kotlinx.coroutines.flow.Flow<List<MeshPeer>>
fun observeIncoming(): kotlinx.coroutines.flow.Flow<IncomingPacket>
}Implementations:
WifiAwareTransport
NearbyConnectionsTransport
BleDiscoveryTransport
FixedAccessPointTransport
- Every critical service must have more than one eligible host.
- Every external route must be actively verified.
- User access and backbone transport should use separate radios.
- City-scale routing should be Layer 3.
- Layer-2 mesh domains should remain bounded.
- Local services should continue without external connectivity.
- Emergency traffic must have explicit priority.
- LoRa forwarding must be controlled.
- Phone DTN messages must be encrypted, signed, deduplicated, and expiring.
- Power state must influence routing.
- Monitoring must be designed before field deployment.
- Every module must have reproducible tests.
- Hardware profiles must be replaceable.
- Protocols and data formats must be publicly documented.
- Contributor work should remain modular and interoperable.
Rooftop firmware: OpenWrt
District routing: Babel or OSPF
Local pod mesh: 802.11s or batman-adv
Service runtime: Containers on Linux
Monitoring: Prometheus-compatible metrics
Dashboards: Grafana-compatible dashboards
Backend services: Go, Rust, Java/Kotlin, or TypeScript
Android application: Kotlin
Local database: SQLite/Room
Cryptography: Well-reviewed modern libraries
LoRa firmware: C/C++ or Rust
Simulation: Python plus graph/network libraries
Configuration: YAML or JSON with schema validation
Automation: Ansible or equivalent reproducible provisioning
allytag acts as the guiding Developer for the project.
The guiding Developer is responsible for:
- Maintaining the reference architecture.
- Defining stable protocol interfaces.
- Reviewing major design changes.
- Coordinating contributor workstreams.
- Approving compatibility requirements.
- Maintaining milestone priorities.
- Ensuring modules remain independently testable.
- Publishing reference deployments.
- Keeping build and deployment documentation current.
Contributors can independently own:
- Firmware.
- Hardware design.
- Routing.
- Android development.
- Backend services.
- LoRa networking.
- Security.
- Monitoring.
- Simulation.
- Documentation.
- Field testing.
- Deployment automation.
Good first issues:
- Implement the FSPL and Fresnel calculator.
- Define the gateway health JSON schema.
- Build a mock authenticated probe server.
- Create an OpenWrt package list for a rooftop node.
- Build a topology simulator for ten nodes.
- Define the compact LoRa packet serializer.
- Implement message-ID duplicate suppression.
- Create the Android
MeshTransportinterface. - Build a battery-runtime calculator.
- Create a local emergency portal prototype.
- Define Prometheus metrics for gateways.
- Write the laboratory failover test procedure.
- Create a reproducible bill-of-materials template.
- Build a district IP-address planning tool.
- Write contribution and code-review guidelines.
The open-source project succeeds when an independent contributor group can reproduce a pilot network from public documentation and demonstrate:
Multiple active backhauls
Automatic gateway selection
Automatic route withdrawal and restoration
Routed rooftop connectivity
Standard Wi-Fi user access
Local services
Priority traffic handling
LoRa emergency messaging
Phone-based DTN exchange
Battery and solar telemetry
Live network monitoring
Documented reproducible tests
2–3 independent backhauls
+ physically separated gateway sites
+ active-active route selection
+ directional multi-radio Layer-3 rooftop backbone
+ bounded 802.11s or batman-adv district pods
+ standard Wi-Fi access for phones
+ local DNS, messaging, maps, voice, and content services
+ controlled low-bandwidth LoRa emergency plane
+ solar and battery-powered infrastructure
+ optional Android delay-tolerant edge mesh
+ monitoring, simulation, and reproducible deployment tooling
This document is the contributor-facing technical blueprint for the Community Resilient Network guided by allytag.