Codify is an AI-assisted service that turns GitLab issue comments into code changes, branches, commits, and Merge Requests. It also ships with a Vue-based dashboard for task operations, scheduling, monitoring, analytics, configuration, and access control.
- Watches GitLab issue comments such as
@ai-bot <prompt> - Creates tasks with priority, scheduling, retry, and manual execution support
- Runs each task in an isolated Docker worker container
- Uses a Claude CLI-compatible backend to generate and apply changes
- Pushes commits, creates or updates Merge Requests, and posts progress back to GitLab
- Provides a dashboard for tasks, logs, monitoring, analytics, sessions, config, and auth
- GitLab sends a webhook to
/api/webhook/gitlab - Backend parses the command and stores a
Task - Scheduler selects runnable tasks by status, priority, schedule, and concurrency
- Worker executor launches a dedicated Docker container
- The worker clones the repo, runs Claude CLI, commits, pushes, and updates the MR
- Dashboard users track status, logs, containers, analytics, and configuration
backend/app/api/webhook.py— GitLab webhook receiverbackend/app/api/tasks.py— task APIs and queue viewsbackend/app/core/worker.py— task execution and MR updatesbackend/app/scheduler.py— priority scheduling and crash recoverybackend/app/api/config.py— runtime and auth configurationfrontend/src/views/— dashboard pagesdeploy/— Dockerfiles, compose deployment, worker entrypoint
- Task dashboard
- Task detail and logs
- Manual task creation
- Schedule overview
- Analytics
- Monitor
- Sessions
- Configuration
- Access management
- OIDC diagnostics
- Docker and Docker Compose
- A reachable GitLab instance
- A Claude CLI-compatible model endpoint
For the bundled Docker deployment, deploy/docker-compose.yml loads deploy/.env.test for backend and scheduler.
Important values include:
GITLAB_URLGITLAB_BOT_TOKENGITLAB_WEBHOOK_SECRETANTHROPIC_BASE_URLANTHROPIC_API_KEYANTHROPIC_MODELCONFIG_ENCRYPTION_KEYSECRET_KEYSESSION_SECRET
Notes:
- Runtime overrides are persisted in PostgreSQL
system_config - Secrets entered in the dashboard are stored encrypted at rest
- If the PostgreSQL volume is removed, runtime config, users, sessions, and auth state are lost
cd deploy
docker-compose up -d --buildDefault ports:
- Frontend:
http://localhost:8880 - Backend API:
http://localhost:8000
See docs/GITLAB_WEBHOOK_SETUP.md.
See docs/GITLAB_OIDC_SETUP.md.
Recommended rollout:
- Deploy with OIDC disabled
- Ensure
CONFIG_ENCRYPTION_KEYis set - Open the dashboard Configuration page
- Enter OIDC settings and validate them
- Enable OIDC after the checks succeed
Run make help to see all available commands. Key commands:
# Development
make up # Start development environment
make build # Build all images
make logs # View logs
make ps # Show running containers
# Testing
make test-unit # Run unit tests (with coverage)
make test-all # Run all tests (unit + E2E)
make test-e2e # Run all E2E tests (Playwright + GitLab)
# Rebuild specific service
make rebuild-backend # Rebuild backend image
make rebuild-nginx # Rebuild frontend image
make rebuild-worker # Rebuild worker imageComment on an issue with:
@ai-bot create a hello world function
Codify will queue a task, run the worker, push changes, create or update an MR, and report progress back to GitLab.
You can also create tasks directly from the dashboard. Manual tasks skip GitLab issue notifications.
backendandschedulershare the same image indeploy/docker-compose.ymlbackendruns withAUTO_MIGRATE=false;schedulerruns withAUTO_MIGRATE=true- Dashboard configuration route:
/configuration - Project/task visibility is filtered by GitLab access rules for authenticated users
- docs/README.md
- docs/README.zh-CN.md
- docs/DEPLOYMENT.md
- docs/DEVELOPMENT.md
- docs/GITLAB_WEBHOOK_SETUP.md
- docs/GITLAB_OIDC_SETUP.md
- docs/e2e-debugging.md
- docs/SCREENSHOTS.md
- deploy/offline-bundle/README.md
MIT