Multi-Model AI Application with Human-in-the-Loop Workflows
Chamber is a professional AI application that enables multi-model reasoning with human-in-the-loop workflows. Multiple LLM models collaborate on complex tasks, with one acting as orchestrator to synthesize decisions and advance progress.
Chamber supports multiple authentication methods for LLM providers:
Supported Providers:
Benefits:
How to Use:
You can still use traditional API keys if you prefer:
In Settings:
Via Environment Variables:
Create a .env file in the python-sidecar directory:
# Install dependencies
npm install
# Install Python dependencies (using uv)
cd python-sidecar
uv sync
cd ..
# Setup environment variables
cp .env.example .env
# Add your API keys to .env
Create a .env file in the python-sidecar directory:
ANTHROPIC_API_KEY=your_key_here
GOOGLE_API_KEY=your_key_here
XAI_API_KEY=your_key_here
OLLAMA_BASE_URL=http://localhost:11434
This project uses git worktrees for parallel development, allowing you to run long-lived dev servers while developing features.
Current worktree structure:
D:/Projects/chamber [main] β Production-ready code
D:/Projects/chamber-dev [dev] β Active development
Basic workflow:
# Terminal 1: Main worktree - Run dev servers (keeps running!)
cd chamber/
npm run tauri:dev
# Terminal 2: Dev worktree - Develop features
cd ../chamber-dev/
# Make changes, commit, test without stopping the dev server
Create additional worktrees:
# For experiments, PRs, or parallel work
git worktree add ../chamber-experiment -b experiment-branch
git worktree add ../chamber-staging staging
# See all worktrees
git worktree list
# Remove when done
git worktree remove ../chamber-experiment
For detailed git workflows, see GIT_WORKFLOWS.md.
If using API keys instead of OAuth:
.env file (already gitignored).env to version controlAuthorization page won't load:
Authorization fails:
Token refresh errors:
Chamber's keychain storage is compatible with:
For detailed platform-specific testing and verification procedures, see CROSS_PLATFORM_KEYRING.md.
Run the application in development mode:
# Terminal 1: Start SvelteKit dev server
npm run dev
# Terminal 2: Start Tauri (includes Rust hot reload)
npm run tauri:dev
# Terminal 3 (optional): Run Python sidecar standalone for testing
cd python-sidecar
uv run python -m chamber.main --host 127.0.0.1 --port 8765
Configuration is stored in workspace/config/chamber-config.yaml. Edit this file to:
User Input (SvelteKit UI)
β
Svelte Stores + SessionManager
β
Tauri Commands (Rust)
β
Python Sidecar (FastAPI + LangGraph)
β
Orchestrator β Parallel Reasoning β Synthesis β Tools
β
WebSocket Stream β Real-time Updates
β
UI Updates (Reactive Svelte)
# Frontend tests
npm run test
# Rust tests
cd src-tauri
cargo test
# Python tests
cd python-sidecar
uv run pytest
# Build for production
npm run build
npm run tauri:build
This creates platform-specific binaries in src-tauri/target/release/bundle/.
chamber/
βββ src/ # SvelteKit frontend
β βββ lib/
β β βββ components/ # UI components
β β βββ stores/ # Svelte stores
β β βββ services/ # Service layer
β β βββ types/ # TypeScript types
β β βββ db/ # Dexie schema
β βββ routes/ # SvelteKit pages
βββ src-tauri/ # Rust backend
β βββ src/
β βββ commands/ # Tauri commands
β βββ services/ # Business logic
β βββ models/ # Data structures
βββ python-sidecar/ # Python LangGraph backend
β βββ chamber/
β βββ graph/ # LangGraph workflows
β βββ models/ # LLM providers
β βββ tools/ # ReAct tools
β βββ server/ # FastAPI + WebSocket
βββ workspace/ # User workspace
βββ sessions/ # Session MD files
βββ config/ # Configuration
MIT
Contributions welcome! Please read CONTRIBUTING.md for guidelines.