Open core, AGPL-3.0
Self-host the whole thing. Own every moving part.
Run the entire Ony.ai stack on your own infrastructure under AGPL-3.0. Your data, your phone line, your signing keys, your servers. Nothing phones home, and there is no paywalled core. Install the package, bring up the stack, wire your agent.
Quickstart
Running in one command.
Install the package and start a full server on SQLite, with no Docker or database to set up. Connect your agent, then move to the Docker stack when your team needs Postgres.
# install everything, run on sqlite
$ pip install ony
$ ony up
Ony is running at http://127.0.0.1:8001One command starts the dashboard and API on SQLite, with no Docker, Postgres, or Redis. Open 127.0.0.1:8001 and create your account.
# enroll + wire claude code
$ ony init
Connected Claude Code in .claude
# then, inside your session
> /ony away
Ony mode set to awayony init enrolls this machine and installs the /ony skill, the permission gate, and the lifecycle hooks. It issues a per-device key so signed verdicts verify locally.
# postgres 18 + valkey, all in one
$ git clone https://github.com/ony-ai/ony
$ cd ony && cp .env.example .env
# set ONY_SIGNING_SECRET in .env (prod refuses to boot without it)
$ docker compose --project-directory . \
-f deploy/docker-compose.prod.yml \
up -d --build
[+] Running 4/4 db, valkey, api, webWhen you need multiple users and a real database, one compose file brings up the API, dashboard, Postgres 18, and Valkey behind one origin onlocalhost:8080.
Architecture
Four parts, all yours to run.
Four legible pieces with a clear trust boundary. The server is authoritative, the connector verifies, and you run every one of them.
Connector
The ony Python package, installed with pip. A typer CLI that talks to the daemon over a WebSocket agent channel and verifies every signed verdict before honoring it. The same package runs the whole server locally with ony up, so a solo user needs nothing else.
Daemon and server
Owns session state and the outbound decision socket, classifies risk server-side from its own taxonomy, signs verdicts per device, and appends every decision to the hash-chained audit log.
Dashboard
Enroll and revoke devices, review decision history with attribution, and verify the audit chain. Enrollment hands a device its decision_key so it can check signatures locally.
Telephony
Calls go out through your own carrier: SignalWire (the most battle-tested path today), Twilio, Telnyx, or Plivo. You bring your own number and keys, and usage is billed pass-through by your provider, not by Ony.ai.
claude -p --resumewith the decision as the next prompt.Ownership
No lock-in, no phone home.
Self-host means self-host. There is no hidden control plane, no metered core, and nothing that calls back to us.
- Your data stays on your infrastructure, with no phone-home and no third party in the decision loop.
- Your own phone number and telephony account, billed directly by your provider.
- Per-device signing keys that you generate, hold, and rotate.
- Every feature included, with no paywalled core and nothing held back for a paid tier.
- AGPL-3.0 source you can read, audit, modify, and ship.
License
AGPL-3.0, with a commercial path.
Strong copyleft keeps the source open, with a hosted option for teams that cannot take on copyleft obligations.
What AGPL-3.0 means, plainly
- You can run it, study it, modify it, and share it.
- If you distribute it or offer it as a network service, you share your changes under the same license.
- For internal use, you keep your own modifications to yourself.
Need to avoid copyleft?
Ony.ai Cloud is the commercial hosted option. The same product, fully managed, with dedicated numbers per organization, team seats and roles, and managed key storage. No AGPL obligations to reason about, no ops to run.
Community
Contribute.
The roadmap is in the open. Issues, discussions, and ADRs live in the repo, and new agent connectors are welcome.
Open issues and discussions
File a bug, propose a feature, or talk through a design on GitHub. The architecture review and ADRs are in the repo, so context is one click away.
Send a pull request
Pick up a good-first-issue or fix something you hit yourself. The contract shapes are settled in the ADRs, so changes stay grounded and easy to review.
Add an agent connector
Every agent event normalizes into one AgentEvent shape, so the model is agent-agnostic. Adding support for a new coding agent is mostly mapping its events.
Get started
Clone it, run it,
make it yours.
The whole stack is on GitHub under AGPL-3.0. Bring it up with one command and own every part of the loop.