Assign any goal to an AI. It decomposes the task, spins up specialized agents, uses your tools, and delivers results. No workflows to define. No steps to configure. Just delegate.
Create backend/.env from the example and fill in provider/tool keys:
cd backend
cp .env.example .envRequired for normal agent runs:
GROQ_API_KEY=...
ANTHROPIC_API_KEY=...
TAVILY_API_KEY=...Optional integrations:
SLACK_WEBHOOK_URL=...
GITHUB_TOKEN=...
GITHUB_DEFAULT_REPO=owner/repo
OMIUM_API_KEY=...
OMIUM_SKIP_WORKFLOW_REGISTER=true./scripts/test-local.shThis installs backend/frontend dependencies, compiles backend Python files, and builds the frontend.
Terminal 1:
cd backend
source .venv/bin/activate
uvicorn main:app --reload --host 0.0.0.0 --port 8000Terminal 2:
cd frontend
npm run devOpen http://localhost:3000/app.
Use Render for the managed cloud deployment. The repo includes render.yaml, so Render can create the web service, Docker build, health check, and persistent disk from the Blueprint.
- Push this repo to GitHub.
- In Render, create a new Blueprint from the repo.
- Use the generated
omniboxweb service. - Set these environment variables in Render:
FRONTEND_URL=https://your-render-or-custom-domain
CORS_ORIGINS=https://your-render-or-custom-domain
GROQ_API_KEY=...
ANTHROPIC_API_KEY=...
TAVILY_API_KEY=...Optional integrations:
SLACK_WEBHOOK_URL=...
GITHUB_TOKEN=...
GITHUB_DEFAULT_REPO=owner/repo
OMIUM_API_KEY=...
OAUTH_GOOGLE_CLIENT_ID=...
OAUTH_GOOGLE_CLIENT_SECRET=...
OAUTH_GOOGLE_REDIRECT_URI=https://your-render-or-custom-domain/api/auth/google/callback
OAUTH_GITHUB_CLIENT_ID=...
OAUTH_GITHUB_CLIENT_SECRET=...
OAUTH_GITHUB_REDIRECT_URI=https://your-render-or-custom-domain/api/auth/github/callbackOpen:
https://your-render-or-custom-domain/app
The Render service mounts a persistent disk at /data. The app stores state at /data/omnibox.db, /data/workspace, and /data/config.
Run one instance only. The planner/executor worker starts inside the FastAPI lifespan, so multiple app instances would start multiple internal workers.
Use this if you deploy to your own VPS instead of Render.
The production deployment is a Docker Compose stack:
omnibox: one FastAPI process that serves the built frontend and runs the internal planner/executor worker.caddy: HTTPS reverse proxy with automatic TLS certificates.omnibox_data: persistent volume for SQLite and agent workspace files.
cp .env.production.example .env.productionEdit .env.production and set:
DOMAIN=your-domain.com
FRONTEND_URL=https://your-domain.com
CORS_ORIGINS=https://your-domain.com
AUTH_SECRET_KEY=replace-with-a-long-random-secret
GROQ_API_KEY=...
ANTHROPIC_API_KEY=...
TAVILY_API_KEY=...Point your domain's A record at the server, then start the stack:
docker compose --env-file .env.production up -d --buildOpen https://your-domain.com/app.
Check health and logs:
curl https://your-domain.com/api/health
docker compose --env-file .env.production logs -f omniboxCreate a SQLite backup from the running container:
./deploy/backup-sqlite.shRun one app container and one uvicorn worker for now. The planner/executor worker starts inside the FastAPI lifespan, so multiple app replicas would start multiple internal workers. The production container stores state at /data/omnibox.db, /data/workspace, and /data/config.