chore: rename project quicnprotochat -> quicproquo (binaries: qpq)
Rename the entire workspace:
- Crate packages: quicnprotochat-{core,proto,server,client,gui,p2p,mobile} -> quicproquo-*
- Binary names: quicnprotochat -> qpq, quicnprotochat-server -> qpq-server,
quicnprotochat-gui -> qpq-gui
- Default files: *-state.bin -> qpq-state.bin, *-server.toml -> qpq-server.toml,
*.db -> qpq.db
- Environment variable prefix: QUICNPROTOCHAT_* -> QPQ_*
- App identifier: chat.quicnproto.gui -> chat.quicproquo.gui
- Proto package: quicnprotochat.bench -> quicproquo.bench
- All documentation, Docker, CI, and script references updated
HKDF domain-separation strings and P2P ALPN remain unchanged for
backward compatibility with existing encrypted state and wire protocol.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Running the Client
|
||||
|
||||
The quicnprotochat CLI client provides subcommands for connectivity testing, identity registration, KeyPackage exchange, and persistent group messaging. All commands connect to the server over QUIC + TLS 1.3 and issue Cap'n Proto RPC calls against the `NodeService` endpoint.
|
||||
The quicproquo CLI client provides subcommands for connectivity testing, identity registration, KeyPackage exchange, and persistent group messaging. All commands connect to the server over QUIC + TLS 1.3 and issue Cap'n Proto RPC calls against the `NodeService` endpoint.
|
||||
|
||||
---
|
||||
|
||||
@@ -10,8 +10,8 @@ These flags apply to every subcommand:
|
||||
|
||||
| Flag | Env var | Default | Purpose |
|
||||
|---|---|---|---|
|
||||
| `--ca-cert` | `QUICNPROTOCHAT_CA_CERT` | `data/server-cert.der` | Path to the server's TLS certificate (DER format). The client uses this to verify the server's identity during the TLS handshake. |
|
||||
| `--server-name` | `QUICNPROTOCHAT_SERVER_NAME` | `localhost` | Expected TLS server name. Must match a SAN in the server's certificate. |
|
||||
| `--ca-cert` | `QPQ_CA_CERT` | `data/server-cert.der` | Path to the server's TLS certificate (DER format). The client uses this to verify the server's identity during the TLS handshake. |
|
||||
| `--server-name` | `QPQ_SERVER_NAME` | `localhost` | Expected TLS server name. Must match a SAN in the server's certificate. |
|
||||
|
||||
Most subcommands also accept `--server` (default `127.0.0.1:7000`) to specify the server address.
|
||||
|
||||
@@ -24,11 +24,11 @@ Most subcommands also accept `--server` (default `127.0.0.1:7000`) to specify th
|
||||
Send a health probe to the server and print the round-trip time.
|
||||
|
||||
```bash
|
||||
cargo run -p quicnprotochat-client -- ping
|
||||
cargo run -p quicproquo-client -- ping
|
||||
```
|
||||
|
||||
```bash
|
||||
cargo run -p quicnprotochat-client -- ping --server 192.168.1.10:7000
|
||||
cargo run -p quicproquo-client -- ping --server 192.168.1.10:7000
|
||||
```
|
||||
|
||||
**Output:**
|
||||
@@ -49,7 +49,7 @@ These commands generate a fresh identity keypair in memory each time they run. T
|
||||
Generate a fresh Ed25519 identity, create an MLS KeyPackage, and upload it to the Authentication Service.
|
||||
|
||||
```bash
|
||||
cargo run -p quicnprotochat-client -- register
|
||||
cargo run -p quicproquo-client -- register
|
||||
```
|
||||
|
||||
**Output:**
|
||||
@@ -66,7 +66,7 @@ Share the `identity_key` value with peers who want to add you to a group. They w
|
||||
Fetch a peer's KeyPackage from the Authentication Service by their Ed25519 public key.
|
||||
|
||||
```bash
|
||||
cargo run -p quicnprotochat-client -- fetch-key a1b2c3d4e5f6...
|
||||
cargo run -p quicproquo-client -- fetch-key a1b2c3d4e5f6...
|
||||
```
|
||||
|
||||
The `identity_key` argument must be exactly 64 lowercase hex characters (32 bytes).
|
||||
@@ -90,7 +90,7 @@ KeyPackages are single-use: fetching a KeyPackage atomically removes it from the
|
||||
Run a complete Alice-and-Bob MLS round-trip against a live server. Both identities are created in-process; both communicate through the server's AS and DS.
|
||||
|
||||
```bash
|
||||
cargo run -p quicnprotochat-client -- demo-group --server 127.0.0.1:7000
|
||||
cargo run -p quicproquo-client -- demo-group --server 127.0.0.1:7000
|
||||
```
|
||||
|
||||
**Output:**
|
||||
@@ -106,21 +106,21 @@ This is the fastest way to verify that the entire stack (QUIC + TLS + Cap'n Prot
|
||||
|
||||
## Persistent group commands
|
||||
|
||||
These commands use a state file (`--state`, default `quicnprotochat-state.bin`) to persist the Ed25519 identity seed and MLS group state between invocations. A companion key store file (same path with `.ks` extension) holds HPKE init private keys.
|
||||
These commands use a state file (`--state`, default `qpq-state.bin`) to persist the Ed25519 identity seed and MLS group state between invocations. A companion key store file (same path with `.ks` extension) holds HPKE init private keys.
|
||||
|
||||
All persistent commands share the `--state` flag:
|
||||
|
||||
| Flag | Env var | Default |
|
||||
|---|---|---|
|
||||
| `--state` | `QUICNPROTOCHAT_STATE` | `quicnprotochat-state.bin` |
|
||||
| `--server` | `QUICNPROTOCHAT_SERVER` | `127.0.0.1:7000` |
|
||||
| `--state` | `QPQ_STATE` | `qpq-state.bin` |
|
||||
| `--server` | `QPQ_SERVER` | `127.0.0.1:7000` |
|
||||
|
||||
### `register-state`
|
||||
|
||||
Create or load a persistent identity, generate a KeyPackage, and upload it to the AS.
|
||||
|
||||
```bash
|
||||
cargo run -p quicnprotochat-client -- register-state \
|
||||
cargo run -p quicproquo-client -- register-state \
|
||||
--state alice.bin \
|
||||
--server 127.0.0.1:7000
|
||||
```
|
||||
@@ -141,10 +141,10 @@ Refresh the KeyPackage on the server using your **existing** state file. Does no
|
||||
- Your KeyPackage has expired (server TTL, e.g. 24h).
|
||||
- Your KeyPackage was consumed (someone invited you) and you want to be invitable again.
|
||||
|
||||
Run with the same `--access-token` (or `QUICNPROTOCHAT_ACCESS_TOKEN`) as for other commands.
|
||||
Run with the same `--access-token` (or `QPQ_ACCESS_TOKEN`) as for other commands.
|
||||
|
||||
```bash
|
||||
cargo run -p quicnprotochat-client -- refresh-keypackage \
|
||||
cargo run -p quicproquo-client -- refresh-keypackage \
|
||||
--state alice.bin \
|
||||
--server 127.0.0.1:7000
|
||||
```
|
||||
@@ -163,7 +163,7 @@ If you are told "no key" when someone tries to invite you, have them wait and ru
|
||||
Create a new MLS group. The caller becomes the sole member at epoch 0.
|
||||
|
||||
```bash
|
||||
cargo run -p quicnprotochat-client -- create-group \
|
||||
cargo run -p quicproquo-client -- create-group \
|
||||
--state alice.bin \
|
||||
--group-id "project-chat"
|
||||
```
|
||||
@@ -180,7 +180,7 @@ The group state is saved to the state file. You can now invite peers with `invit
|
||||
Fetch a peer's KeyPackage from the AS, add them to the group, and deliver the Welcome message via the DS.
|
||||
|
||||
```bash
|
||||
cargo run -p quicnprotochat-client -- invite \
|
||||
cargo run -p quicproquo-client -- invite \
|
||||
--state alice.bin \
|
||||
--peer-key b9a8c7d6e5f4... \
|
||||
--server 127.0.0.1:7000
|
||||
@@ -202,7 +202,7 @@ invited peer (welcome queued)
|
||||
Join a group by consuming a Welcome message from the DS.
|
||||
|
||||
```bash
|
||||
cargo run -p quicnprotochat-client -- join \
|
||||
cargo run -p quicproquo-client -- join \
|
||||
--state bob.bin \
|
||||
--server 127.0.0.1:7000
|
||||
```
|
||||
@@ -219,7 +219,7 @@ joined group successfully
|
||||
Encrypt and send an application message to a peer via the DS.
|
||||
|
||||
```bash
|
||||
cargo run -p quicnprotochat-client -- send \
|
||||
cargo run -p quicproquo-client -- send \
|
||||
--state alice.bin \
|
||||
--peer-key b9a8c7d6e5f4... \
|
||||
--msg "hello from alice" \
|
||||
@@ -238,7 +238,7 @@ message sent
|
||||
Receive and decrypt all pending messages from the DS.
|
||||
|
||||
```bash
|
||||
cargo run -p quicnprotochat-client -- recv \
|
||||
cargo run -p quicproquo-client -- recv \
|
||||
--state bob.bin \
|
||||
--server 127.0.0.1:7000
|
||||
```
|
||||
@@ -257,12 +257,12 @@ Additional flags:
|
||||
|
||||
```bash
|
||||
# Wait up to 5 seconds for messages
|
||||
cargo run -p quicnprotochat-client -- recv \
|
||||
cargo run -p quicproquo-client -- recv \
|
||||
--state bob.bin \
|
||||
--wait-ms 5000
|
||||
|
||||
# Stream messages continuously
|
||||
cargo run -p quicnprotochat-client -- recv \
|
||||
cargo run -p quicproquo-client -- recv \
|
||||
--state bob.bin \
|
||||
--stream --wait-ms 10000
|
||||
```
|
||||
@@ -271,7 +271,7 @@ cargo run -p quicnprotochat-client -- recv \
|
||||
|
||||
## HPKE init key lifecycle warning
|
||||
|
||||
The MLS protocol requires that the HPKE init private key generated during KeyPackage creation is available when processing the corresponding Welcome message. In quicnprotochat, this private key is stored in the key store file (`.ks` extension alongside the state file).
|
||||
The MLS protocol requires that the HPKE init private key generated during KeyPackage creation is available when processing the corresponding Welcome message. In quicproquo, this private key is stored in the key store file (`.ks` extension alongside the state file).
|
||||
|
||||
**The same state file and key store must be used for both `register-state` and `join`.** If you:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user