From project goal to work an agent can continue.
Ajiya is a CLI task manager for coding agents. It stores project structure, ticket state, dependencies and completion evidence in your repository, so work can continue across agent sessions.
The same four steps each session.
Keep each session small. Check the plan, pick a ticket that can start, do the work, then commit and mark the ticket done with evidence.
Lists the tickets that can start, launch work first. You can filter by app or limit it to launch or milestone work.
Starts the ticket and tracks the work. Run ajiya ticket show LP-0007 to see its requirements.
Each commit message names one to three tickets, usually in a trailer. A Git hook checks the message.
Closes the ticket against a commit that names it. With --test, Ajiya runs the project test command first. If it fails, the ticket is not marked done.
ajiya next ajiya ticket start LP-0007 # make the change git add . git commit -m "Add course catalog endpoint" \ -m "Ajiya: LP-0007" ajiya ticket done LP-0007 --test
One plan for the app, CLI and agents.
Ajiya stores phases, tickets, dependencies and done conditions with your code. The CLI and the local dashboard read the same project state, so each session can see where the work stands.
learning-platform/ ├── ajiya.toml config · apps · launch ├── ajiya/ │ ├── accounts.md phase │ ├── course-catalog.md phase │ ├── production.md phase · launch target │ └── PROGRESS.md generated ├── apps/api/ app └── apps/web/ app
Hand off work without a restart.
The local dashboard shows the same state as the CLI. These views are from a sample project, Learning Platform, with the ticket prefix LP.
Resume from the shared plan
The next session reads the project's tickets, status and dependencies, so you do not have to rebuild the plan from an old chat.
Board
Every ticket by where it stands.
Can start now
3In progress
1Waiting
3Needs a human
0Done
2Board: every ticket by where it stands.
See what is holding up launch
Follow the tickets behind a launch goal. Ajiya shows blocked tickets and tickets that need a person.
Dependencies
What waits on what. An arrow points from a dependency to what needs it; columns go left to right by depth.
Dependencies: what waits on what. An arrow points from a dependency to what needs it.
Check completed work
Link tickets to commits and, if you choose, require passing tests. Your team can review the evidence behind each completed ticket.
Activity
Commits from the last 30 days, newest first, with the status changes they made.
Activity: commits, newest first, with the status changes they made.
Check the evidence before you call work done.
A ticket closes only against a commit that names it, so a reviewer can inspect the change instead of relying on an agent's report. Add --test to require passing tests.
A Git hook checks each commit. CI checks again if the hook did not run. Merges, reverts and chores are exempt.
The CLI writes the ticket files in one format. ajiya check reports manual edits that do not match it.
Set a launch target and Ajiya includes its dependencies. If Course Player depends on Enrollment, and Enrollment depends on Accounts, all three count as launch work.
Ajiya runs locally and works with the coding agent you choose. The agent handles its own model connection, and the plan stays in your repo.
Ajiya works with Claude Code and Codex, and with Python, PHP, Go or JavaScript projects.
Checks report what is wrong
ajiya check checks project consistency and evidence. Fix errors first. The same rules stop a ticket from closing without a commit.
Checks
What ajiya check reports. Fix errors first.
| Level | Code | Where | Problem | Fix |
|---|---|---|---|---|
| error | E002 | ajiya/course-catalog.md:9 | file is not in the form ajiya writes (edited by hand?) | restore it with git checkout -- ajiya/course-catalog.md and make the change with ajiya commands |
| warning | W010 | ajiya.toml | 2 open tickets in no milestone: LP-0011 LP-0012 | make a milestone's targets depend on them, or add a milestone for the later work |
| warning | W007 | ajiya.toml | nothing required for launch mentions deployment or hosting | add a ticket for deployment or hosting that the launch target depends on |
$ ajiya ticket done LP-0008 ✗ ticket done LP-0008: no commit since LP-0008 was started names it
Ajiya refuses to close a ticket when no commit names it.
Review the plan before your agent starts work.
Install Ajiya, then run ajiya init in your project. Install options are in the docs.
$ ajiya init Project name? Learning Platform Ticket prefix? LP ✓ ajiya.toml, hooks, agent kit
- Describe the project goal to your agent.
- Your agent creates phases, tickets and dependencies with CLI commands.
- Review launch work and tickets that need a person.
- Approve the plan. The agent then starts on a defined ticket.
$ ajiya init Apps: api (composer.json) web (package.json) Plans: TODO.md · GitHub issues ✓ imported as draft tickets
- Import existing work without changing its wording.
- Group the tickets into phases and connect dependencies.
- Let your agent record completed work and identify missing tickets.
- Review the plan and choose what starts next.
Set up Ajiya in this repository and plan: <what you want to build>. If the ajiya command is missing, install it with npm install -g @ajiya/cli (or the install script from https://github.com/AliyuYahaya/Ajiya). Then run ajiya init --yes and ajiya hook install, and follow .ajiya/guide/setup.md: ask me at most three questions, then hand over a summary. Don't start building until I say so.
Set up Ajiya in this repository and bring in the work we already track. If the ajiya command is missing, install it with npm install -g @ajiya/cli (or the install script from https://github.com/AliyuYahaya/Ajiya). Run ajiya init --yes and ajiya hook install, import our GitHub issues with ajiya import github (or our TODO.md with ajiya import todo TODO.md), then organise them as .ajiya/guide/setup.md describes and hand over a summary. List duplicates for me instead of dropping anything.
Works with Claude Code, Codex, Cursor and other coding agents in a terminal, IDE or desktop app. After setup, agents pick up Ajiya from the repository on their own.