Conduit
Conduit is a deterministic, local-first MCP gateway that federates tools from multiple Streamable HTTP servers behind one policy-enforced and auditable endpoint.
It presents one MCP 2026-07-28 endpoint, publishes stable names such as
github.search_code, and routes an authorised call only through its stored
downstream route. It is deliberately not a general-purpose MCP proxy.
Install
The Python distribution name is conduit-gateway (the import and command
remain conduit):
pipx install conduit-gateway
# or: python -m pip install conduit-gateway
For local development from a checkout:
python -m venv .venv
. .venv/bin/activate
python -m pip install -e '.[test]'
The Go v0.1.x releases remain available through their existing release tags and
the go-v0.1-maintenance branch; this branch is the Python implementation.
Quick start
conduit --init --config conduit.yaml
# Edit the downstream URL, its owned credentials, and policy rules.
conduit --config conduit.yaml
--init writes the bundled template privately and never overwrites an existing
configuration. Checkout users may also copy the root conduit.example.yaml.
Conduit binds loopback addresses only. Once its downstream catalog is ready:
curl http://127.0.0.1:8080/healthz
listener:
address: 127.0.0.1:8080
allowed_origins: []
audit:
path: ./conduit-audit.jsonl
policy:
allow: ["github.*"]
deny: []
limits:
max_pages_per_downstream: 32
max_tools_per_downstream: 256
max_downstream_catalog_bytes: 1048576
max_aggregate_tools: 512
max_aggregate_response_bytes: 4194304
max_tool_response_bytes: 4194304
catalog_refresh_interval: 60s
request_timeout: 10s
tool_call_timeout: 30s
downstreams:
- id: github
url: http://127.0.0.1:9000/mcp
headers: {}
Scope and safety model
Conduit supports server/discover, deterministic policy-filtered tools/list,
and terminal JSON tools/call over MCP 2026-07-28. Downstreams are
Streamable HTTP only. It has no automatic tool-call retries, legacy fallback,
stdio, OAuth broker, identity system, database, dashboard, or SSE/progress
bridge.
Every public tool has an explicit immutable route. Policy is deny-wins, then
allow, then default-deny. A durable tool_call_authorized audit entry is
fsynced before downstream side effects. Caller headers, cookies, and
credentials are never forwarded; configured downstream headers are isolated per
server. Redirects are disabled, response bodies are bounded while streaming,
and downstream sessions receive a single invocation-owned cleanup DELETE.
flowchart LR
C[MCP client] --> I[Conduit ingress]
I --> R[Immutable registry + policy]
R --> A[Durable audit]
A --> D[One-shot dispatcher]
D --> S[Exact downstream MCP route]
Read the documentation for configuration, operations, protocol compatibility, security, and development.
Development
python -m pytest --cov
ruff check .
mypy src
python -m build
See CONTRIBUTING.md, SECURITY.md, and the Apache-2.0 license.
Metadata
Release files for conduit-gateway 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| conduit_gateway-0.2.2.tar.gz | 28.5 kB | With provenance | Details for conduit_gateway-0.2.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| conduit_gateway-0.2.2-py3-none-any.whl | Python 3 | none | any | Details for conduit_gateway-0.2.2-py3-none-any.whl |
Total release size: 61.0 kB
Release files / conduit_gateway-0.2.2.tar.gz
| Download URL | conduit_gateway-0.2.2.tar.gz |
|---|---|
| Size | 28.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3c33d2c3bca658defe720e4e73d0137c5d1f1e348abed3a1ead8f01acf317307
|
|
BLAKE2b-256 checksum How to use checksums |
d5cbb7d03ec5dcfd6620c7401a584b4965df8cd2343331ef64497a74fc84e652
|
| 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 2, 2026.
Transparency logRelease files / conduit_gateway-0.2.2-py3-none-any.whl
| Download URL | conduit_gateway-0.2.2-py3-none-any.whl |
|---|---|
| Size | 32.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1af618372127795bbf06cc4b9b4df0f58ca5c0db4d9eeca444ab67236dcf7fc8
|
|
BLAKE2b-256 checksum How to use checksums |
a4a5166f593204c2a68b0d92a25c2b94658b95156b9a08e1e3a06224104d652b
|
| 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 2, 2026.
Transparency logSecurity for conduit-gateway 0.2.2
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.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for conduit_gateway-0.2.2.tar.gz
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 2, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.