{"id":50434270,"url":"https://github.com/markc/amp","last_synced_at":"2026-05-31T16:03:12.753Z","repository":{"id":361324529,"uuid":"1253219232","full_name":"markc/amp","owner":"markc","description":"Agent Mesh Protocol (AMP) library family — pure-Rust wire format + WebSocket broker client + SPEC 07 property surface. Markdown-shaped messages over WebSocket/mesh.","archived":false,"fork":false,"pushed_at":"2026-05-30T04:47:58.000Z","size":74,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-30T06:21:41.711Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/markc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-29T08:54:46.000Z","updated_at":"2026-05-30T04:48:01.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/markc/amp","commit_stats":null,"previous_names":["markc/amp"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/markc/amp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markc%2Famp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markc%2Famp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markc%2Famp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markc%2Famp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/markc","download_url":"https://codeload.github.com/markc/amp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markc%2Famp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33737692,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-31T16:03:11.251Z","updated_at":"2026-05-31T16:03:12.741Z","avatar_url":"https://github.com/markc.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# amp\n\n**Agent Mesh Protocol** — a pure-Rust library family for messaging across a WireGuard-secured mesh of agent-operable services.\n\nAMP follows the AmigaOS ARexx convention: every service in the mesh exposes a named, addressable port; any peer can `send` it a command, `call` it for a reply, or subscribe to its event topics. The broker (`cosmix-noded`, in [cos](https://github.com/markc/cos)) routes messages between peers; everything inside the mesh is trusted on a per-WireGuard-subnet basis. amp is the protocol library that lets a service participate.\n\n## Crates\n\n| Crate | What it is |\n|---|---|\n| **`cosmix-lib-amp`** | Wire format. `AmpMessage` request/reply/event types, serialisation independent of target. The `native` feature adds Unix-socket helpers used by the broker; client code typically leaves the default features on. |\n| **`cosmix-lib-client`** | `NodedClient` — broker WebSocket client. Native (`tokio` + `tokio-tungstenite`) and `wasm32` (`gloo-net`) targets. Caller supplies the broker URL. |\n| **`cosmix-lib-props-core`** | SPEC 07 property read surface — `PropTree`, `PropPath`, `PropValue` by default; the `dispatch_props` AMP-wire handler and `publish::*` event builders gated behind the opt-in `amp` feature. Paired with the substrate-side `cosmix-lib-props-store` in cos. |\n\namp deliberately holds the *protocol* layer only — no storage, no TLS, no config-file loading, no auto-resolve of broker URLs. Anything substrate-shaped lives in cos.\n\n## Building\n\namp builds standalone — no sibling checkouts required.\n\n```sh\ngit clone https://github.com/markc/amp ~/.amp\ncd ~/.amp/src \u0026\u0026 cargo build --workspace\n```\n\nTests:\n\n```sh\ncd ~/.amp/src \u0026\u0026 cargo test --workspace\n```\n\nLints:\n\n```sh\ncd ~/.amp/src \u0026\u0026 cargo clippy --workspace --all-targets -- -D warnings\n```\n\n## Using as a library\n\namp is not on crates.io yet. Cargo's git dependency form has no sub-directory selector and this workspace lives under `src/`, so depend on it via path-deps to a sibling checkout:\n\n```sh\ngit clone https://github.com/markc/amp ~/.amp\n```\n\n```toml\n[dependencies]\ncosmix-lib-amp    = { path = \"../../amp/src/crates/cosmix-lib-amp\" }\ncosmix-lib-client = { path = \"../../amp/src/crates/cosmix-lib-client\" }\n```\n\n(Once the crates publish, depend via version: `cosmix-lib-amp = \"0.1\"` etc.)\n\nMinimal `NodedClient` usage:\n\n```rust\nuse cosmix_client::NodedClient;\nuse serde_json::json;\n\n#[tokio::main]\nasync fn main() -\u003e anyhow::Result\u003c()\u003e {\n    let client = NodedClient::connect(\"my-service\", \"ws://localhost:4200/ws\").await?;\n    let pong = client.call(\"noded\", \"noded.ping\", json!(null)).await?;\n    println!(\"pong: {pong}\");\n    Ok(())\n}\n```\n\n`examples/test_noded.rs` under `cosmix-lib-client/` is a manual broker-acceptance harness — run it against a live `cosmix-noded` to exercise the wire end-to-end.\n\n## Where the broker comes from\n\namp ships the *client* and *protocol* — not the broker. The reference broker (`cosmix-noded`) lives in [cos](https://github.com/markc/cos). A bare-system amp consumer can still serialise / deserialise `AmpMessage` values without a broker present; `NodedClient::connect` is the call that requires one.\n\n## Related projects\n\n- **[mix](https://github.com/markc/mix)** — ARexx-flavoured scripting language with `send` / `address` / `emit` / `on … do` as first-class keywords, built on amp.\n- **[cos](https://github.com/markc/cos)** — the cosmix daemon family: broker, mail, web, DNS, knowledge indexer, display compositor. Consumer of amp; ships the broker.\n\n## License\n\nMIT. See `LICENSE`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkc%2Famp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarkc%2Famp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkc%2Famp/lists"}