Delegate coding tasks to AI agents. Manage them from a kanban board.
π° Camelot AI gives development teams a way to safely scale their engineering output with AI β without giving up control. Create tasks on a board, let AI agents plan and implement them, review and approve before anything ships. Like having junior developers who never sleep, managed through a clean visual interface.
- Create tasks on a kanban board β or sync them from GitHub Issues
- AI agents pick up tasks, write a plan, and wait for your approval
- You approve the plan β agents execute it and open a PR
- Watch it happen in real-time with live session streaming
- Review the PR, merge, done β agents handle reviewer comments and CI failures too
- Kanban board β 6-stage workflow: todo, planning, executing, pr, done, cancelled. Set priorities, track state at a glance.
- Multi-agent coordination β Run Claude Code and Codex agents in parallel across projects. Priority-based task dispatch.
- Human-in-the-loop β Agents propose plans before writing code. You approve before anything ships. No surprise commits.
- GitHub-native β Sync issues as tasks, track PRs, monitor CI checks. Tasks auto-complete when PRs merge.
- Customizable prompts β Per-project prompt templates with
{{variable}}interpolation. Tune agent behavior to match your conventions. - Tool permissions β Whitelist which CLI tools agents can use. Full control over agent capabilities.
- Real-time streaming β Watch agent output live via WebSocket. Full session logs for every execution.
- Self-hosted β Your code never leaves your infrastructure. PostgreSQL on your servers. No SaaS dependency.
- Magic link auth β No passwords to manage. Email-based authentication out of the box.
| Component | Technology |
|---|---|
| Backend | Elixir, Phoenix LiveView 1.1 |
| Data layer | Ash Framework 3.0 |
| Database | PostgreSQL (via Ecto + AshPostgres) |
| Background jobs | Oban |
| Real-time | Phoenix PubSub + WebSocket |
| Frontend | Phoenix LiveView + Tailwind CSS v4 |
| Auth | AshAuthentication (magic link) |
| HTTP client | Req |
- Elixir >= 1.15 and Erlang/OTP (use asdf or mise for version management)
- PostgreSQL >= 14
- An SSH key is auto-provisioned per user; a GitHub App is optional and
admin-configured for PR/issue polling β see
docs/self-hosting/github-app.md - Claude Code and/or Codex CLI installed
# Clone the repo
git clone https://github.com/T0ha/camelot.git
cd camelot
# Install dependencies, create DB, run migrations, build assets
mix setup
# Generate a secret key
mix phx.gen.secret
# Set it as SECRET_KEY_BASE in your environment
# Start the server
iex -S mix phx.serverVisit localhost:4000.
- Sign in with a magic link sent to your email
- Create a project pointing to a local git repository
- Create a task, pick a CLI Agent (Claude Code or Codex) from the dropdown, and watch it flow through the board
See Get Started (source:
docs/cloud/get-started.md) for a full
walkthrough from first login to your first merged PR.
Key environment variables (see config/runtime.exs for full details):
| Variable | Description | Required |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | Production (optional override in dev/test) |
SECRET_KEY_BASE |
Cookie signing secret (mix phx.gen.secret) |
Production |
PHX_HOST |
Application hostname | Production |
PORT |
HTTP port (default: 4000) | No |
POOL_SIZE |
Database pool size (default: 10) | No |
REGISTRATION_ENABLED |
When false, new sign-ups are blocked; existing users can still sign in (default: true) |
No |
GITHUB_APP_* |
GitHub App integration (GITHUB_APP_ID, _SLUG, _CLIENT_ID, _CLIENT_SECRET, _PRIVATE_KEY_B64, _WEBHOOK_SECRET) β see docs/self-hosting/github-app.md |
No (opt-in per deployment) |
When REGISTRATION_ENABLED=false (cloud beta mode), the sign-in screen rejects unknown emails. Use the mix task to add users β the first invocation creates an admin who can then add more users from /admin/users:
# First admin (bootstrap)
mix camelot.create_user me@example.com
# Subsequent users
mix camelot.create_user teammate@example.com --role userInside a release:
bin/camelot eval 'Mix.Tasks.Camelot.CreateUser.run(["me@example.com"])'Agent CLI βββ Tasks βββ Sessions
β
Projects βββββββββ€
β
PromptTemplates
- Projects map to local git repositories with optional GitHub integration
- Agent CLI configs wrap a CLI tool (Claude Code or Codex) β executable, args, parser, runner image β configured once (admin-only) and picked per task
- Tasks pick a fixed Agent CLI at creation and flow through a state machine: draft β todo β planning β executing β pr β done
- Sessions record each execution of a task, driven by a
TaskRunnerprocess, with full output logs - Prompt Templates are customizable per-project with variable interpolation
Key modules: Camelot.Board.Task, Camelot.Agents.Agent,
Camelot.Runtime.TaskRunner, Camelot.Projects.Project,
Camelot.Prompts.PromptTemplate
mix test # Run tests
mix format # Format code
mix credo # Lint
mix dialyzer # Type checking
mix precommit # All checks before committingSee CLAUDE.md and AGENTS.md for AI-assisted development guidelines.
π° Camelot AI is a standard Phoenix application. See the Phoenix deployment guides for general instructions.
Run docker compose up to deploy with the included Dockerfile and
docker-compose.yml.
- Kanban board with full task lifecycle
- Claude Code and Codex agent support
- GitHub issue sync and PR tracking
- Prompt template customization
- Real-time session streaming
- Tool permission controls
- Docker / docker-compose deployment
- Webhook-based GitHub integration
- Additional agent types
- Team / multi-user collaboration
- π° Camelot AI Cloud (hosted version)
PRs welcome β see the roadmap above for ideas.
- Branch off
developand open your PR againstdevelopβmainis release-only and is updated through an automaticdevelopβmainPR - Follow the Elixir Style Guide
- Run
mix precommit,mix credoandmix dialyzerbefore submitting - Open an issue first for large changes
Branching model, CI pipelines and the release flow are documented in docs/contributing.md.
