Docker
An image with Omni and the CLIs at pinned versions, to run ai serve on your own server. It includes Claude Code, Codex, Cursor and Grok. Antigravity is not included, because it has no command-line install.
git clone https://github.com/samuelrms/omni-ai-cli && cd omni-ai-cli
docker compose up -d
docker compose logs omni # key generated on first start
docker exec -it omni ai --account login primary
- Login: see Browserless login. Provider keys go through
docker exec -it omni ai --key <tool>. - Data: logins, keys, config and cooldowns live in the
omni-homevolume, which survives recreating the container.docker compose down -vdeletes it. - Server key: if none is provided, one is generated and shown once in the log. To set your own, use
SMART_AI_SERVER_KEY, orSMART_AI_SERVER_KEY_FILEwith a Docker secret.docker-compose.ymlhas the example. - Port: published only on
127.0.0.1.OMNI_PORTchanges the port. - Isolation: runs without root, with a read-only filesystem and no capabilities.
- Modes:
OMNI_MODE=plan|edits|auto|yolo docker compose up -d(default:plan). Tools work in/workspace, on theomni-workspacevolume. To use your own folder, setOMNI_WORKSPACE=/path, writable by uid 10001. - Risk outside
plan: commands run as the same user that holds the logins inomni-home. Whoever has the key can read those logins, so give keys only to people you trust and revoke sessions if one leaks. - Codex: its sandbox does not start in the container, because it needs features blocked by Docker and the host kernel. It only uses tools in
yolo, with the container as isolation. Inplan,editsandautoit only answers, without reading or changing files. - Updating:
git pull && docker compose up -d --build.ai --updatedoes not apply to the image. - Ready-made image:
export OMNI_IMAGE=ghcr.io/samuelrms/omni-ai-cli:latest && docker compose pull omni && docker compose up -d --no-build. Each release publishes its version andlatest, for amd64 and arm64. To pin a version, replacelatestwith its number, such as1.23.0. The image includes third-party CLIs, subject to their own terms; using your account also follows those terms.
To expose it on a network, use a reverse proxy with HTTPS, such as Caddy:
omni.example.com {
reverse_proxy 127.0.0.1:8080
}
Risk: the container cannot see your machine's files, but it can see the volume. Anyone with the key can ask a tool to read the credentials stored there. Treat the server key as access to your accounts.
This text comes from the project README. See the original on GitHub