Switchboard
Switchboard lets people share selected local agent sessions (Codex, Claude Code, Hermes, OpenCode, OpenClaw) with permitted people in their workspace. Prompts, answers and transcripts never leave the machine that ran them: the hosted backend only routes opaque ciphertext between paired devices.
This repo is the local side: the connector (Python CLI, resident service and MCP server) and the desktop app. The hosted backend and web app live in switchboard-control.
How it works
flowchart LR
U[Caller asks a question] --> H[Caller harness]
H <-->|MCP over stdio| L[Local MCP server]
L <-->|loopback| C[Caller connector]
C -->|signed encrypted envelope| M[Switchboard backend<br/>directory, grants, opaque mailbox]
M -->|ciphertext only| W[Owner connector<br/>mailbox worker]
W -->|decrypt, recheck grant and policy| A[Harness adapter]
A --> S[Owner session<br/>or caller-isolated fork]
A -->|encrypted answer, reverse path| H
- The connector discovers local harness sessions, publishes the shared ones to the backend directory, and runs the mailbox worker that executes incoming requests after rechecking the grant and the owner's local policy.
- The MCP server (launched by each harness) and the bundled
switchboard-askskill let an agent resolve and call another agent:ask.researchis your own local agent,ask.sim.researchan agent shared with you. - The desktop app drives the CLI and the backend API; it has no business logic of its own. See apps/desktop.
src/switchboard/
├── harness/ adapters for Codex, Hermes, Claude Code, OpenCode and OpenClaw
├── local/ the resident service: CLI, connector, approval bridge, policy
│ ├── owner_app/ owner-local A2A app (task API, agent cards, web UI)
│ ├── mcp/ harness-facing MCP server and remote calls
│ ├── policy/ owner policy authoring and enforcement
│ └── skills/ the switchboard-ask skill installed into every harness
├── mailbox/ envelope crypto, client and worker, QEDB ledger
└── qedb/ A2A task store and proofs
apps/desktop/ Tauri desktop app
docs/ harness registration details
tests/ mirrors src/switchboard
Getting started
Requires Python 3.12+ and uv.
uv sync
make check # pre-commit hooks, tests and build: the CI gate
make lint, make format, make typecheck and make test run the pieces
individually.
To run the connector from your checkout against a backend:
uv run switchboard install --switchboard-url <control backend URL>
uv run switchboard pair --device-name "dev machine"
uv run switchboard status
install registers your harnesses and a per-user service (LaunchAgent,
systemd user unit or Scheduled Task); start, stop and uninstall manage it.
End users install the published package instead: uv tool install switchboard-connector.
The connector (connector-v* tag, PyPI) and the desktop app (desktop-v* tag,
switchboard-releases) are
released separately by CI.
License
Business Source License 1.1, see LICENSE.md.
Metadata
Release files for switchboard-connector 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| switchboard_connector-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Release files / switchboard_connector-0.2.2-py3-none-any.whl
| Download URL | switchboard_connector-0.2.2-py3-none-any.whl |
|---|---|
| Size | 191.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aeae5d52e426ab9740ae1756cc27a26989321183e086f55d0bad076778ebe494
|
|
BLAKE2b-256 checksum How to use checksums |
b45800a6aaa252f1b31d50800471fa508250cc899639aa5c7440e6ee67adcb58
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency log