
bymorning
io.github.bymorning/bymorning
Open source, self-hosted MCP and model gateway: your installation's Tools over OAuth.
Documentation
ByMorning
An open source, self-hosted MCP and model gateway.
Documentation · Install · Connect agents · Download · Changelog
ByMorning gives your team's agents access to company systems, and caps what they spend.
- Company systems as Tools. People and agents reach your internal systems through Plugins and MCP servers, each person under their own permissions.
- Spend limits. A limit per Workspace, member, or Service Account, applied to every model call.
- Models and routing. OpenAI-, Anthropic-, and Google-compatible endpoints, with routing across the providers you enable.
- Your cloud. It runs in your own cloud account or Kubernetes cluster.
Status. ByMorning is open source under the MIT License and community maintained: fork it, open pull requests, and run your own builds. Read SECURITY.md before reporting a vulnerability.
Install
Every release image is signed keylessly by this repository's release workflow and published to
ghcr.io/bymorning/bymorning, with signed evidence (SBOMs, scans, provenance) on the
GitHub release. Choose where to run it:
| Where | Use |
|---|---|
| One machine, to try it | Docker Compose evaluation. Not for production. |
| AWS or AWS GovCloud (US) | Terraform module, also on the Terraform Registry as bymorning/bymorning/aws. |
| Azure (AKS) | Azure installer: Terraform and Kubernetes manifests, with a digest-pinned image. |
| Any Kubernetes cluster | Helm chart, with your own database, object storage, and key. |
Connect coding agents
- Models. Point Claude Code, Codex, Cursor, VS Code Copilot, OpenCode, or Gemini CLI at your installation's OpenAI-, Anthropic-, and Google-compatible endpoints with a Service Account key. Spend limits, routing, and usage apply to every call. See Connect coding agents.
- Tools. Add
https://<your host>/mcpto the agent as a remote MCP server. The agent signs in with OAuth as a Workspace member and gets the Tools that member may use, under the Workspace's permissions. See Use ByMorning's Tools from an agent.server.jsondescribes it for the MCP Registry asio.github.bymorning/bymorning.
Develop
You need Bun 1.3 and Node 22+. From the repository root:
bun install --frozen-lockfile
bun run dev
Open http://localhost:3000; local sign-in goes straight to the workspace. Local development needs no cloud credentials, SST, or external login provider. Docker is not required for the database; it is only needed for the Code Interpreter and the application tests.
- The development host keeps Postgres-compatible data with PGlite under
.bymorning/local/pglite. bun run devruns the API watcher (port 3210) and Vite (port 3000) together, and the API runs migrations at startup.- Choose ports with
PORT=4001 WEB_PORT=4000 bun run dev:PORTis the API, andWEB_PORTis Vite and the default login callback origin. bun run localis the bundled, one-origin development host instead.- Build the execution image with
bun run --cwd app/host setupwhen you need the Code Interpreter.
Build the host bundle
One host program, app/host, serves every deployment. Its production build is what the root Dockerfile ships:
bun run --cwd app/host build
node app/host/dist/bymorning.mjs
It requires the deployment's storage and key selectors (STORAGE_PROVIDER, CIPHER_BACKEND), their companions, and the
database, cookie, and origin settings documented in app/host/README.md. The development build
adds PGlite, filesystem storage, the local cipher, and the Docker Code Interpreter, and needs nothing set:
bun run --cwd app/host build:dev
node app/host/dist/bymorning.mjs
Distribute the complete dist/ directory, including the installation documents and the loadable plugin packages. The
Docker image runs the production bundle with Node; no compiled application executable is built.
The host guide has the deployment contract, the development defaults, Vite arguments, and database ownership. CONTRIBUTING.md covers tests and pull requests.
Releases
A release is one Gateway image, delivered as a linux/amd64 OCI tarball pinned by digest, plus signed evidence (SBOMs,
vulnerability and license reports, scans, SLSA provenance, SHA256SUMS). It is installer-neutral: every installer
delivers the same tarball and verifies the same digest.
Release signatures are keyless. There is no signing key to store or rotate. The full-gate workflow signs the
evidence with Sigstore using its own GitHub Actions identity: the signing certificate names
the workflow run, and the signature is recorded in the public transparency log.
- A signature is a release signature only when that identity is
full-gate.ymlof this repository running on av*tag. The installer export refuses anything else, and it verifies every signature withcosignbefore it packages a release. - Anyone can check a release with the identity and issuer in
release/signer.txt, as the download page shows, and rebuild a release from its tag to compare digests: the build is reproducible.
Maintainers: docs/releasing.md is the procedure for cutting a release.
More documentation
- Host guide: the deployer's contract, environment rules, and evaluation installations.
- Identity provider setup.
- Deploying with SST: the SST app's database migrations and authentication settings.
- Security review package: architecture, control mapping, supply chain, and test results, rendered to a PDF with each release.
- Domain glossary and the Changelog.
Contributing
See CONTRIBUTING.md. Report vulnerabilities privately as described in SECURITY.md. Participation is governed by the Code of Conduct.
License
ByMorning is released under the MIT License. Third-party material is credited in THIRD_PARTY_NOTICES.md. The license covers the code; it does not grant rights to the ByMorning name or logo.
No installation packages available.