Skip to content

Viscous106/omniBox

Repository files navigation

omniBox

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.

Setup

Create backend/.env from the example and fill in provider/tool keys:

cd backend
cp .env.example .env

Required 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

Test Locally

./scripts/test-local.sh

This installs backend/frontend dependencies, compiles backend Python files, and builds the frontend.

Development

Terminal 1:

cd backend
source .venv/bin/activate
uvicorn main:app --reload --host 0.0.0.0 --port 8000

Terminal 2:

cd frontend
npm run dev

Open http://localhost:3000/app.

Production

Render

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.

  1. Push this repo to GitHub.
  2. In Render, create a new Blueprint from the repo.
  3. Use the generated omnibox web service.
  4. 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/callback

Open:

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.

Docker Compose

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.production

Edit .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 --build

Open https://your-domain.com/app.

Check health and logs:

curl https://your-domain.com/api/health
docker compose --env-file .env.production logs -f omnibox

Create a SQLite backup from the running container:

./deploy/backup-sqlite.sh

Run 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.

About

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.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors