Repository avatar
AI Tools
v1.3.4
active

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.

ci full-gate Release License: MIT OpenSSF Best Practices Last commit

Artifact Hub Terraform Registry MCP Registry

Container images Signed with Sigstore

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.

The Budgets page of the ByMorning console, with a monthly spend limit for the workspace, for one member, and for a service account named Claude Code.

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:

WhereUse
One machine, to try itDocker 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 clusterHelm 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>/mcp to 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.json describes it for the MCP Registry as io.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 dev runs 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: PORT is the API, and WEB_PORT is Vite and the default login callback origin.
  • bun run local is the bundled, one-origin development host instead.
  • Build the execution image with bun run --cwd app/host setup when 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.yml of this repository running on a v* tag. The installer export refuses anything else, and it verifies every signature with cosign before 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

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.

Remote