Quickstart
This guide gets Diminuendo running on your local machine in dev mode — authentication bypassed, SQLite databases auto-created, and the gateway listening on port 8080. You will connect a client, create a session, and receive your first state snapshot.Prerequisites
Bun 1.0+
Diminuendo runs on Bun, a fast JavaScript runtime with native WebSocket and SQLite support. Install it with
curl -fsSL https://bun.sh/install | bash or via your system package manager.Clone and Install
The repository uses git submodules for its backend service dependencies (Podium, Ensemble, Chronicle). Clone with--recurse-submodules to pull them in a single step:
Start in Dev Mode
developer@example.com in the dev tenant. No Auth0 configuration, no JWT tokens, no environment variables required.
The gateway creates a
./data directory on first run containing SQLite databases for tenant registries and session data. This directory is gitignored. Delete it at any time to reset all state.Connect with a WebSocket Client
Any WebSocket client will work. Here is the sequence usingwscat:
Your First Session
With the connection authenticated, create a session, join it, and receive a state snapshot — the three-step handshake for any Diminuendo interaction:1
Create a session
Send:Receive:
2
Join the session
Send (using the Receive a state snapshot — the complete current state of the session:
id from the previous response):3
Subscribe to events
After joining, your client is automatically subscribed to all events for that session. When another client (or the agent itself) produces events, they will stream to your connection in real time.
Using the TypeScript SDK
The@igentai/diminuendo-client SDK wraps the raw WebSocket protocol into a typed, promise-based API. Here is the same sequence using the SDK:
Run the Test Suite
The gateway includes 9 integration tests that validate protocol handling, session lifecycle, event mapping, and error paths:Full Dev Stack
bun dev starts the gateway only. It expects PODIUM_URL and ENSEMBLE_URL in your .env (typically pointing at staging services) and does not build Podium, Ensemble, or Chronicle locally. To run the full stack on your machine, follow the README’s Full Development Stack instructions and build the Rust/Go services separately.
Full stack ports (when running services locally)
Full stack ports (when running services locally)
| Service | Port | Purpose |
|---|---|---|
| Diminuendo | 8080 | WebSocket gateway (this project) |
| Podium Coordinator | 5082 | Agent orchestration |
| Ensemble | 5180 | LLM inference and routing |
| Chronicle | (local-sync) | Workspace filesystem (APFS/ext4 files) |
| Valkey (Redis-compatible) | 6379 | Podium state and pub/sub |
| MinIO | 9000 | S3-compatible object storage |
Other SDKs
Rust SDK
Tokio-based async client with
futures::Stream for events. Ideal for Tauri desktop apps and CLI tools.Python SDK
Asyncio-based client with callback event handling. Works in scripts, tests, and Jupyter notebooks.
Swift SDK
Actor-based async/await client for macOS and iOS. Codable events with zero third-party dependencies.
Next Steps
- Architecture Overview — understand how the gateway’s modules compose
- Wire Protocol — explore every message type in detail
- Configuration — environment variables, auth setup, and production tuning