Spanway
Spanway is a self-hosted, commercially licensed AI gateway for platform teams. One OpenAI-compatible API in front of more than a hundred model providers, with virtual keys, teams and organisations, budgets and rate limits, routing with fallbacks, guardrails, caching, prompt management, an MCP gateway, tracing, and an Admin UI. The enterprise layer adds the license system, custom roles, a developer portal with approvals, compliance and data governance, billing and invoicing, evals and red teaming, and the hosted Cloud edition
This repository is private. Spanway is not open source. See LICENSE and enterprise/LICENSE.md
Layout
| Path | What it is |
|---|---|
spanway/ |
The gateway: SDK, proxy server, router, integrations |
enterprise/ |
The Spanway enterprise package (license-gated features) |
spanway-proxy-extras/ |
Database schema and migrations |
spanway-rust/ |
Rust crates used by the Python bridge and by Lens |
lens/ |
Lens, the tracing and investigation worker and its UI library |
third_party/ |
Vendored upstream packages with their notices (DeepEval, DeepTeam, the admin agent and its MCP connector) |
ui/spanway-dashboard/ |
The Admin UI (Next.js) |
docs/ |
docs.spanway.ai (Docusaurus) |
website/ |
spanway.ai (Next.js static export) |
helm/, terraform/, backend/, gateway/, migrations/, docker/ |
Deployment assets and the per-service images |
scripts/fork/ |
Fork tooling: sync_upstream.py, rebrand.py, sync_vendored.py, issue_license.py |
Run it locally
uv sync --extra proxy --extra extra_proxy --extra evals
export SPANWAY_MASTER_KEY=sk-... # generate your own
export SPANWAY_LICENSE=... # issue one with scripts/fork/issue_license.py
export DATABASE_URL=postgresql://spanway@localhost:5432/spanway
python spanway/proxy/proxy_cli.py --config spanway/proxy/dev_config.yaml --use_v2_migration_resolver
The Admin UI dev server is npm run dev in ui/spanway-dashboard on port 3000. The docs site is npm run start in docs, the website is npm run dev in website
Build and release
Pushing a tag vX.Y.Z runs .github/workflows/release.yml: native wheels for Linux x86_64, Linux arm64 and macOS arm64 plus the pure packages, PyPI through trusted publishing, the container images under ghcr.io/sgourneni/, and the Helm charts under oci://ghcr.io/sgourneni/charts. Local builds: uv build, docker build -f Dockerfile .
Verifying release images and charts
Every image and Helm chart the release workflow pushes is signed with cosign keyless signing and carries an SPDX SBOM attestation. There is no long-lived public key to download. The signing certificate is issued by Sigstore to the release workflow's GitHub OIDC identity, so verification checks that identity instead
IMAGE=ghcr.io/sgourneni/spanway-ai:v1.0.0
IDENTITY='^https://github\.com/sgourneni/spanway-ai/\.github/workflows/release\.yml@refs/tags/v'
ISSUER=https://token.actions.githubusercontent.com
cosign verify --certificate-identity-regexp "$IDENTITY" --certificate-oidc-issuer "$ISSUER" "$IMAGE"
cosign verify-attestation --type spdxjson \
--certificate-identity-regexp "$IDENTITY" --certificate-oidc-issuer "$ISSUER" "$IMAGE"
Charts verify the same way with their OCI reference, for example ghcr.io/sgourneni/charts/spanway:<chart version>. A signature made by any other workflow, branch or fork fails the identity check
Keeping up with upstream
The gateway, Lens, the admin agent and the MCP connector are forks. upstream.json records the upstream commit each one is synced to and scripts/fork/sync_upstream.py --name <upstream> --dry-run shows what a sync would apply. Vendored Python packages refresh with scripts/fork/sync_vendored.py. See scripts/fork/UPSTREAM_SYNC.md
Checks
make check runs the full lint and type gates. Unit tests live under tests/unit mirroring the source tree, end-to-end tests under tests/e2e. See AGENTS.md for the engineering conventions every change follows
Metadata
Release files for spanway 1.106.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| spanway-1.106.0.tar.gz | 20.6 MB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| spanway-1.106.0-cp310-abi3-manylinux_2_28_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| spanway-1.106.0-cp310-abi3-manylinux_2_28_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.28+ ARM64 | Details |
| spanway-1.106.0-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 126.7 MB
Release files / spanway-1.106.0.tar.gz
| Download URL | spanway-1.106.0.tar.gz |
|---|---|
| Size | 20.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7afd3241f3dd98f688bddf67243386d95e2a96732c8f7ee395de3aebdf1efc87
|
|
BLAKE2b-256 checksum How to use checksums |
541f7a2ca73960b2e2e327fc380cea8e5e94ae54103c4b0a0831e2b7fa15df79
|
| 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 Oct 18, 2026.
Transparency logRelease files / spanway-1.106.0-cp310-abi3-manylinux_2_28_x86_64.whl
| Download URL | spanway-1.106.0-cp310-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 36.0 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
5eb2cc40d9469898da09ff0cc63ea580cfa81684e60fb6de1ef832e97caf3258
|
|
BLAKE2b-256 checksum How to use checksums |
1a47f7cb6b66234a321364ca580a3e78b2afd762b7369954165d8dd9deebfdfa
|
| 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 Oct 18, 2026.
Transparency logRelease files / spanway-1.106.0-cp310-abi3-manylinux_2_28_aarch64.whl
| Download URL | spanway-1.106.0-cp310-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 35.3 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
b63daff304ec4616a9255de6651c1b119fd645b330aa794a90fec545bcdb117c
|
|
BLAKE2b-256 checksum How to use checksums |
4ce564f2b01efebbe203407e501a67d6e1cc99dff26ea7a8b581b26607968b5f
|
| 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 Oct 18, 2026.
Transparency logRelease files / spanway-1.106.0-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | spanway-1.106.0-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 34.8 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
65509d310f0f6636af3dd02dd60d5daede8bc77a6129e1b1a2610e6a672a72e3
|
|
BLAKE2b-256 checksum How to use checksums |
1c57ce9d0181f305881220648694c21a25581854354e9372034cb76cba9f1ae8
|
| 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 Oct 18, 2026.
Transparency log