Gitdex is a local-first control plane for running Codex-powered software teams against GitHub issues and pull requests.
It turns a product request into a tracked delivery flow with fixed AI roles:
- Product Manager: clarifies requirements with the user and produces a handoff.
- Planner: turns confirmed requirements into GitHub issues with ownership, dependencies, and acceptance criteria.
- Developer: implements one GitHub issue at a time inside explicit owned paths.
- QA: validates pull requests against issue requirements and acceptance criteria.
- Reviewer: reviews implementation and merge readiness after QA passes.
- Merge agent: merges approved PRs and closes the GitHub issue.
- DevOps: handles deployment planning, release operations, and production follow-up.
Gitdex uses the local codex CLI, the local gh CLI, GitHub issues/PRs/labels, and local SQLite state. It is designed to keep the backend deterministic: the server queues work, passes context between agents, stores state, and syncs GitHub; agents make the judgment calls.
- Next.js 16 web console and API server.
- First-run admin setup and login-protected console.
- Project setup bound to a GitHub repository.
- Local SQLite storage in
data/gitdex.sqlite. - Per-project GitHub owner/repo setup, repo discovery, issue creation, PR lookup, labels, comments, review, and merge operations through
gh. - Codex CLI status checks and long-running agent sessions.
- PM, Planner, Developer, QA, Reviewer, Merge, Architect blocker-resolution, and DevOps sessions with persistent chat and execution logs.
- Structured PM handoff to create a requirement record.
- Requirement IDs such as
R1,R2, andR3. - Planner issue breakdown with explicit developer roles, owned paths, acceptance criteria, and issue-number dependencies.
- GitHub issue tracking as the main execution object after planning.
- Developer worktree isolation under
data/gitdex-workspaces/. - Developer PR creation/recovery and retry after failed QA.
- QA validation with comments and
gd:*stage labels on the GitHub issue. - Reviewer code review before merge.
- Merge jobs after QA and review pass.
- Specification blocker escalation to Architect from Developer or QA.
- Auto Run for issue lists: Gitdex keeps running any currently runnable issue stage, including parallel work where dependencies allow it.
- Auto Run pause, stop, resume, and persisted state across refreshes.
- Per-issue controls:
Run Dev,Run QA,Run Review, andRun Merge. - Live job status and Codex output in the chat window.
- GitHub sync and triage views.
- Self-update UI for pulling/building the latest Gitdex code and requesting a service restart when configured.
- Optional Telegram PM entry point.
Gitdex separates work into three phases.
The user talks with the PM until the requirement is clear enough to plan. PM should ask one focused question at a time and provide concise options when clarifying the request.
The PM produces structured handoff JSON with:
- the confirmed requirement,
- constraints,
- acceptance criteria,
- open questions, if any.
Gitdex records this as a requirement. Requirements may be created while other requirements are still running; workflows are not assumed to be serial.
After the Planner receives a confirmed requirement, GitHub becomes the source of execution tracking.
The Planner creates one or more GitHub issues. Each issue should include:
- a clear title and requirement,
- acceptance criteria,
- developer role,
- owned paths,
- dependencies by GitHub issue number,
- whether work can run in parallel or must wait for another issue.
Each issue then moves through these role-owned stages:
Run Dev -> Run QA -> Run Review -> Run Merge -> done
Rules:
- Developer implements and opens or updates a PR.
- QA validates the PR. If QA fails, the issue returns to Developer.
- QA or Developer may mark an issue as specification-blocked when the issue cannot be safely implemented or validated without Architect clarification.
- Architect resolves specification blockers by updating issue scope, acceptance criteria, or owned paths, then queues Developer retry.
- Reviewer reviews code after QA passes.
- Merge runs only after QA passes and review marks the PR ready.
- The backend does not hand-roll conflict resolution or code judgment; those decisions are delegated to Codex agents.
After issues are merged, DevOps owns deployment and operational follow-up:
- deployment setup,
- release automation,
- rollback planning,
- incident analysis,
- production follow-up.
If operations uncover product or implementation work, DevOps should hand it back to Architect or Planner so a new GitHub issue can enter the normal issue-tracking phase.
The project page uses a ChatGPT-style layout: a left workspace sidebar and a main chat/content area.
The left sidebar is organized around requirements and their GitHub issues:
- New Requirement: starts or resumes the PM requirement chat.
- Requirements: recent requirement chats, status, archive, and the entry to all requirements.
- GitHub Issues: active issue list under the selected requirement, issue labels, PR links, action buttons, and Auto Run.
- Project tools: GitHub triage, settings, project details, and Add Project.
The GitHub issue list shows GitHub-backed labels as labels. Local execution state, such as a currently running Codex job, affects buttons and live status instead of being treated as a GitHub label.
Issue actions are intentionally small:
Run DevRun QARun ReviewRun Merge
Auto Run runs whatever is currently runnable in the visible issue list. It can advance different issues in different stages at the same time, for example one issue in Dev and another in Review, as long as dependencies allow it. Auto Run can be paused, stopped, and resumed. Manual escalation to Architect pauses Auto Run so the user can take over a blocked flow without automatic work continuing underneath.
The chat window shows agent messages, job status, elapsed time, and live Codex output. Finished jobs retain execution logs.
Gitdex creates and reads labels for durable GitHub workflow state.
Common state labels:
gd:dev
gd:fix
gd:rebase
gd:qa
gd:review
gd:merge
gd:architect
gd:blocked
gd:done
There should be exactly one gd:* stage label on an active GitHub issue. The UI derives the visible action from that stage:
gd:dev -> Run Dev
gd:fix -> Run Dev
gd:rebase -> Run Dev
gd:qa -> Run QA
gd:review -> Run Review
gd:merge -> Run Merge
gd:architect -> Run Architect
gd:blocked -> Resolve
gd:done -> no run action
Older workflow labels such as gitdex:need-qa, gitdex:qa-passed, gitdex:qa-failed, and gitdex:ready-to-merge are treated as legacy labels. Gitdex migrates or removes them during sync/repair so the issue label state converges back to a single gd:* stage label.
Common role labels:
role:backend_developer
role:web_developer
role:app_developer
role:admin_developer
role:devops_developer
role:data_developer
role:general_developer
Labels should be changed through Gitdex or by an operator who understands the workflow. The UI treats GitHub labels as the visible badge source, while local job state controls button loading and live execution status.
src/app/ Next.js pages and API routes
src/components/ Web UI components
src/lib/ Codex, GitHub, workflow, storage, auth, settings, and job logic
scripts/ Node test suite
data/ Local runtime state, ignored by git
Important runtime files:
data/gitdex.sqlite SQLite runtime database
data/gitdex-workspaces/ per-agent Git worktrees
- Node.js with
node:sqlitesupport. - npm.
- Authenticated GitHub CLI:
gh auth status- Authenticated Codex CLI:
codex --version
codex loginGitdex expects codex exec and gh operations to work on the host machine.
Product site: https://gitdex.ai
Quick install:
curl -fsSL https://gitdex.ai/install.sh | bashThe script installs Gitdex into ~/.gitdex/app, links gitdex into ~/.local/bin, installs dependencies, and builds the app. The install location can be changed with GITDEX_INSTALL_DIR, and the command directory can be changed with GITDEX_BIN_DIR.
To install and start Gitdex as a background service during installation:
curl -fsSL https://gitdex.ai/install.sh | GITDEX_INSTALL_SERVICE=1 bashClone the repository:
git clone git@github.com:Gitdex-AI/gitdex.git
cd GitdexInstall dependencies:
npm installStart the development server:
gitdex devOpen:
http://127.0.0.1:8000
The dev server binds to 127.0.0.1:8000.
Useful CLI commands:
gitdex doctor
gitdex dev
gitdex build
gitdex start
gitdex update
gitdex status
gitdex install-service
gitdex service-status
gitdex service-logs
gitdex uninstall-servicegitdex install-service installs a per-user service. On macOS it writes ~/Library/LaunchAgents/ai.gitdex.next.plist; on Linux it writes ~/.config/systemd/user/gitdex.service. Service logs are stored under data/logs/.
Most settings are configured in the web console.
Useful environment variables:
APP_BASE_URL=http://127.0.0.1:8000
TELEGRAM_BOT_TOKEN=
TELEGRAM_WEBHOOK_SECRET=
CODEX_BIN=codex
CODEX_MODEL=gpt-5.4
CODEX_SANDBOX=workspace-write
CODEX_APPROVAL_POLICY=never
GITHUB_TOKEN=
GITHUB_REPO=owner/repo
GITHUB_API_URL=https://api.github.com
DATA_DIR=./data
GITDEX_ENABLE_SELF_UPDATE=true
GITDEX_NEXT_SERVICE_MANAGER=pm2
GITDEX_NEXT_SERVICE_NAME=gitdex-nextdata/ is local runtime state and must not be committed.
- Open Settings and verify Codex and GitHub CLI status.
- Create a project and enter the GitHub owner or organization for that project.
- Select the repository from the owner-specific repository list.
- Let Gitdex update the repo's
AGENTS.mdworkflow section if desired. - Open the project page and start from the PM chat.
Gitdex preserves content outside its managed AGENTS.md block.
Run the automated test suite:
npm testRun type checks:
npm run typecheckBuild:
npm run buildStart the production server:
npm startFocused issue-run policy test:
npm run test:issue-runDo not commit local runtime data.
Ignored or sensitive local data includes:
data/
node_modules/
.next/
.env
.env.local
data/ may contain:
- SQLite workflow state,
- Codex session data,
- GitHub SSH private keys,
- cached tool status,
- local Git worktrees,
- project and workflow history.
Treat it as sensitive.
Telegram support is optional and primarily routes messages into the selected project's PM session.
Configure:
TELEGRAM_BOT_TOKEN=
TELEGRAM_WEBHOOK_SECRET=
APP_BASE_URL=Register the webhook:
curl http://127.0.0.1:8000/api/setup/webhookCommands:
/start
/projects
/use <project_slug>
/current
/status <workflow_id>
MIT License.
Copyright © 2026 Gitdex AI.
Gitdex automates parts of a GitHub-based development workflow with AI agents. Agent output may be incomplete or incorrect, and users are responsible for reviewing code changes, workflow actions, credentials, permissions, and deployment decisions. Gitdex is provided as-is under the MIT License, without warranty.