These instructions are for the implementation agent working on Bonded.
Build the server, Linux client, and Android client for initial end-to-end testing, following the requirements in docs/requirements/ and the phased plan in docs/design/implementation-plan.md.
Read these first and keep them aligned with your work:
docs/requirements/product-requirements.mddocs/requirements/platform-requirements.mddocs/requirements/open-questions.mddocs/design/implementation-plan.md
If code and docs disagree, update code to match the requirements unless the requirements are clearly stale. If you discover a necessary design decision not captured in the docs, add it to the implementation plan under Key Implementation Decisions.
- Work in small vertical slices that produce a runnable checkpoint.
- Prefer shared Rust code for protocol, auth, session, scheduler, and transport logic.
- Keep the first transport as NaiveTCP until end-to-end flow works.
- Do not start peer-sharing implementation until the base server + Linux client tunnel works reliably.
- Keep the Android app thin at first: pairing, VPN plumbing, and a minimal connect/disconnect UI.
docs/design/implementation-plan.md is the live checkpoint file and MUST be updated during implementation.
Update it when:
- a task starts
- a task completes
- a task is blocked
- a design decision is made
- a new subtask is discovered
For each touched task:
- change
Status - update
Noteswith concrete details - record any new blocker in
Blockers / Issues - record any architecture or library decision in
Key Implementation Decisions
Do not leave the document stale after a coding session.
Follow this order unless blocked:
- Cargo workspace and shared crates
- Core framing, session layer, auth primitives, NaiveTCP transport
- Server startup, config, pairing, QR emission, session acceptance
- Linux CLI client with TUN integration and end-to-end tunnel test
- Android shell app, QR scan, pairing, VPN integration
- Production transport(s)
- Peer-sharing feature work
A checkpoint is complete only if:
- the code builds
- any available tests for the changed area pass
- the implementation plan is updated
- the checkpoint can be resumed by another agent from the docs alone
Do not expand scope beyond the current phase without updating the plan.
Examples:
- Do not build a dashboard for device management in v1.
- Do not implement advanced scheduler strategies before naive scheduling works.
- Do not implement QUIC or WSS before NaiveTCP end-to-end tests pass.
These are suggestions, not mandates:
bytesfor framing bufferstokio-utilfor codecs if usefulserde+tomlfor confignotifyfor file watchinged25519-dalekor equivalent for signing/auth identityqrcodefor terminal/log QR generationtunor platform-appropriate crate for Linux TUN handling
Choose libraries pragmatically and log the decision in the implementation plan.