1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
[]
= "conclave-cli"
= "0.3.4"
= "2024"
= "2"
= ["Aaron Roney <twitchax@gmail.com>"]
= "Discord-for-agents: shared channels that let Claude Code sessions talk to each other over a central server."
= "MIT"
= "https://github.com/twitchax/conclave"
= "README.md"
= ["cli", "claude", "mcp", "agents", "chat"]
= ["command-line-utilities"]
# The published crate is `conclave-cli` (the bare `conclave` name is squatted),
# but the installed binary is still `conclave` (see DESIGN.md §20).
[]
= "conclavelib"
= "src/lib.rs"
[[]]
= "conclave"
= "src/bin.rs"
# Framework deps + the M1 substrate (wire protocol, identity, embedded store).
# Later feature crates (axum/tungstenite/rustls) land in the milestone that needs
# them — see .prds/PRD-0003..0006 and DESIGN.md §21.
[]
= "1"
# The central server's WSS endpoint (M2): axum's WebSocket upgrade over a plain-HTTP origin —
# TLS terminates at cloudflared (DESIGN.md §11/§12), so no rustls here. `default-features = false`
# keeps it to the WS server essentials.
= { = "0.8", = false, = ["tokio", "http1", "ws"] }
= "0.22"
# `serde` feature bridges bincode 2 to our serde-derived frames (bincode::serde::*).
= { = "2", = ["serde"] }
= { = "0.4", = ["serde"] }
= { = "4", = ["derive", "env"] }
# Shell completion generation for the `completions` verb (PRD-0011 T-005).
= "4"
= "6"
# Hostname for the `register --machine` default (DESIGN.md §5.1); tiny, zero-dependency.
= "1"
# `Stream`/`Sink` combinators to split the axum WebSocket into independent read/write halves so a
# session can be fanned-out to while it is still reading (M2 session driver).
= { = "0.3", = false, = ["std", "sink", "async-await"] }
# Ed25519 (and the ECDH / AEAD / HKDF primitives v2 E2E will need) via `ring` — one
# audited crypto dependency. `from_seed_unchecked` keeps the clean raw-32-byte-seed
# keystore, and `ring`'s system RNG replaces a separate rand/getrandom dependency.
= { = "0.17", = ["std"] }
= "0.10"
= { = "1", = ["derive"] }
# The bridge's MCP stdio peer speaks newline-delimited JSON-RPC 2.0 (M3); the wire protocol to
# central stays bincode. `serde_json` is only for the Claude Code ↔ bridge hop.
= "1"
# Embedded SurrealDB via the bare SDK (no ORM). SurrealKV is the pure-Rust on-disk
# backend (clean cross-compile); kv-mem backs hermetic tests. DESIGN.md §15.
= { = "3", = false, = ["kv-mem", "kv-surrealkv"] }
= "2"
# M2 adds `sync`/`time`/`net`/`signal`; M3's bridge adds `io-std` (stdin/stdout MCP transport)
# to the M1 baseline.
= { = "1", = false, = ["rt-multi-thread", "macros", "io-util", "io-std", "sync", "time", "net", "signal"] }
# The bridge's outbound WS client to central servers (M3); also drives the M2 e2e test client.
# `rustls-tls-webpki-roots` lets the client dial `wss://` (TLS terminates at the cloudflared/fly.io
# edge, DESIGN §11/§12) with the Mozilla CA roots bundled — no system cert store (PRD-0009 T-001).
= { = "0.29", = ["rustls-tls-webpki-roots"] }
# Pulled transitively by tokio-tungstenite's TLS; depended on directly only to install a process
# default crypto provider — rustls 0.23 cannot auto-pick when several are compiled in (PRD-0009 T-001).
= "0.23"
= "1"
= "0.1"
# `json` backs `CONCLAVE_LOG_FORMAT=json` for platform log pipelines (PRD-0014 T-003).
= { = "0.3", = ["fmt", "ansi", "env-filter", "json"] }
# Server observability (PRD-0014 T-002): traces export over OTLP/HTTP when `serve` runs with
# `CONCLAVE_OTLP_ENDPOINT` set — no endpoint, no exporter. http-proto + reqwest keeps tonic out.
= "0.32.0"
= { = "0.32.1", = ["rt-tokio"] }
= { = "0.32", = false, = ["trace", "http-proto", "reqwest-blocking-client", "logs"] }
# Direct dep ONLY to switch on reqwest's TLS for the OTLP exporter (feature unification):
# opentelemetry-http 0.32 asks reqwest for a `webpki-roots` feature that no longer exists in
# reqwest 0.13, so the exporter's own TLS features are unusable — without this, an https://
# collector fails with "network error". Platform roots: the runtime image ships ca-certificates.
= { = "0.13", = false, = ["rustls", "blocking"] }
= "0.33.0"
= "0.32"
# One-shot CLI verbs restore the default SIGPIPE disposition so `conclave … | head` dies quietly
# like any Unix CLI instead of panicking on BrokenPipe (PRD-0011 follow-up).
[]
= "0.2"
[]
= "1"
= "3"
# `test-util` (paused clock) drives the deterministic reaper/reconnect tests; `process` lets the
# M3 e2e drive spawned `conclave bridge` processes over async stdio. Dev-only.
= { = "1", = ["test-util", "process"] }
# Lints live in the Cargo `[lints]` table so they apply DRY across lib + bin
# (DESIGN.md §22). Groups run at priority -1 so specific lints can override them,
# and so the narrow, justified `allow`s macro codegen occasionally needs stay local.
[]
= { = "deny", = -1 }
[]
= { = "deny", = -1 }
= { = "deny", = -1 }
= { = "deny", = -1 }
= "deny"
[]
= 3
= true
= 1
= true
# Fast-iterate: release-like codegen without the expensive LTO / single-CGU link.
[]
= "release"
= 1
= false
= 16
= 1
= false
# Backs the Performance constitution's "measure hot paths with criterion":
# release optimizations, full debug info, no LTO so symbols stay legible.
[]
= "release"
= 2
= false
= false