Backend Setup
Prerequisites
- Python 3.12+
- Git
- Anthropic API key
- Voyage AI API key
- GitHub token (for opening PRs)
Clone and install
git clone https://github.com/arpjw/nimbus.git
cd nimbus/backend
pip install -r requirements.txt
Configure environment
Copy the example env file:
cp .env.example .env
Edit .env:
# Required
ANTHROPIC_API_KEY=sk-ant-...
VOYAGE_API_KEY=pa-...
GITHUB_TOKEN=ghp-...
# Optional: change models
PLANNER_MODEL=claude-opus-4-6
IMPLEMENTER_MODEL=claude-sonnet-4-6
REVIEWER_MODEL=claude-sonnet-4-6
# Optional: storage
CHROMA_PERSIST_DIR=./.chroma
WORKSPACE_BASE_DIR=/tmp/nimbus-workspaces
# Optional: auth
REQUIRE_API_KEY=false
See Configuration Reference for all variables.
Run the backend
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
The API is now available at http://localhost:8000. Interactive docs at http://localhost:8000/docs.
Database
SQLite is used by default. The database file (nimbus.db) is created automatically on first startup. No migration command is needed — tables are created at startup.
ChromaDB persistence
Vector embeddings are stored in ./.chroma/ by default. This directory persists across restarts. To use a different path:
CHROMA_PERSIST_DIR=/data/chroma uvicorn main:app ...
Production deployment
For production, use a process manager:
pip install gunicorn
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000