devmesh 0.1.4

Peer-to-peer dev mesh for sharing local services across machines
Documentation
---

# 🏗 Complete Devtool Incremental Development Plan

---

## **Phase 0: Core Preparation**

**Goal:** Set up environment, plan architecture, and confirm dependencies.

**Tasks:**

1. Choose Rust as the primary language.
2. Set up project scaffolding:

   ```bash
   cargo new devmesh
   ```
3. Add initial dependencies:

   * `clap` → CLI
   * `tokio` → async runtime
   * `hyper` → HTTP server / proxy
   * `tungstenite` → WebSocket
   * `serde` + `serde_json` → JSON config / registry
   * `rustls` → TLS
4. Create **project roadmap and architecture diagram**.
5. Establish versioning strategy (e.g., semantic versions per service).

**Deliverable:** Ready-to-go Rust project with dependencies and architecture plan.

---

## **Phase 1: Local Agent & CLI MVP**

**Goal:** Run local services with CLI, register them locally.

**Tasks:**

1. CLI commands:

   * `devmesh run <service>` → starts local agent + registers service
   * `devmesh status` → shows local services
2. Implement **local service registry** (in-memory, persisted via JSON)
3. Allow local service metadata:

   * Service name
   * Version
   * Port
4. Minimal logging: agent outputs registered services.

**Deliverable:** CLI + local service registration works.

---

## **Phase 2: Local HTTP + WebSocket Proxy**

**Goal:** Route requests to local service; handle WebSocket and HTTPS.

**Tasks:**

1. Implement proxy router:

   * Route requests to local services
   * Support WebSockets (`tungstenite`) and HTTPS (`rustls`)
2. Add logging for requests/responses.
3. Test multiple services locally (simulate dependency calls).

**Deliverable:** Local proxy works; services can call each other on one machine.

---

## **Phase 3: Peer Discovery MVP**

**Goal:** Let local agents discover each other over VPN.

**Tasks:**

1. Implement simple **peer discovery** (Phase 1: broadcast over VPN; later: gossip / libp2p-rs)
2. Maintain **peer service registry**
3. Update CLI `status` to show both local and peer services.
4. Optional: Basic version tracking per peer.

**Deliverable:** Each developer sees what services are running on peers.

---

## **Phase 4: Peer-to-Peer Proxy Routing**

**Goal:** Route requests transparently to peer services.

**Tasks:**

1. Proxy router checks:

   * Local service → use local
   * Peer service → route over VPN tunnel
2. Preserve HTTPS + WebSocket functionality
3. Implement simple retries if peer is offline
4. Warn on version mismatches
5. CLI `status` shows routing paths.

**Deliverable:** Multi-machine service calls work seamlessly.

---

## **Phase 5: Version Awareness & Safety**

**Goal:** Avoid incompatible service calls.

**Tasks:**

1. Track service versions per peer
2. Warn when a request targets an incompatible version
3. Optionally reject routing if version conflict
4. Add logging for mismatched calls

**Deliverable:** Developers see version mismatches and can prevent breakage.

---

## **Phase 6: Optional Local Database Support**

**Goal:** Support services that require DB.

**Tasks:**

1. Allow optional lightweight DB container per service (Postgres / SQLite)
2. Optionally sync subset of staging DB
3. Ensure proxy can handle DB-dependent service calls
4. CLI: `devmesh db status` shows which services need DB and their state

**Deliverable:** Services needing data can run locally with minimal setup.

---

## **Phase 7: Dashboard & Visualization**

**Goal:** Make mesh visible and manageable.

**Tasks:**

1. CLI enhancements:

   * `devmesh graph` → show services, peers, versions
2. Optional lightweight web dashboard:

   * Shows running services
   * Shows peer routing paths
   * Version mismatch warnings
3. Live updates via WebSockets

**Deliverable:** Team can monitor mesh easily.

---

## **Phase 8: Advanced Features (Phase 2+)**

Optional / post-MVP enhancements:

1. Branch-based virtual namespaces
2. Automatic service prioritization & fallback
3. Load balancing between peers
4. Persistent metrics / usage analytics
5. Lightweight encryption over non-VPN networks
6. DB replication or snapshot automation

---

# ⚡ Recommended Rust Libraries

| Feature         | Library                |
| --------------- | ---------------------- |
| CLI             | `clap`                 |
| Async runtime   | `tokio`                |
| HTTP Proxy      | `hyper` + `warp`       |
| WebSocket       | `tungstenite`          |
| Peer Discovery  | `libp2p-rs`            |
| TLS             | `rustls`               |
| JSON / Config   | `serde` + `serde_json` |
| Version parsing | `semver`               |
| Optional DB     | `sqlx` + Docker SDK    |

---

# 🛠 Incremental Development Strategy

1. **Phase 1–2:** Single-machine functionality → test local service registration + proxy
2. **Phase 3–4:** Peer-to-peer routing → expand to 2–3 dev machines on VPN
3. **Phase 5:** Version awareness → safety for multi-service interactions
4. **Phase 6:** DB support → optional, only for services needing it
5. **Phase 7–8:** Dashboard, metrics, advanced features