Skip to content
omni

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-home volume, which survives recreating the container. docker compose down -v deletes 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, or SMART_AI_SERVER_KEY_FILE with a Docker secret. docker-compose.yml has the example.
  • Port: published only on 127.0.0.1. OMNI_PORT changes 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 the omni-workspace volume. To use your own folder, set OMNI_WORKSPACE=/path, writable by uid 10001.
  • Risk outside plan: commands run as the same user that holds the logins in omni-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. In plan, edits and auto it only answers, without reading or changing files.
  • Updating: git pull && docker compose up -d --build. ai --update does 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 and latest, for amd64 and arm64. To pin a version, replace latest with its number, such as 1.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