How it works

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 loop

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.

01
Pick the next ticket
ajiya next

Lists the tickets that can start, launch work first. You can filter by app or limit it to launch or milestone work.

02
Start it
ajiya ticket start LP-0007

Starts the ticket and tracks the work. Run ajiya ticket show LP-0007 to see its requirements.

03
Commit with the Ajiya trailer
Ajiya: LP-0007

Each commit message names one to three tickets, usually in a trailer. A Git hook checks the message.

04
Mark it done with evidence
ajiya ticket done LP-0007 --test

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.

one session
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
What changes

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.

Learning Platform · ajiya serve
Learning Platform
Overview
Next up3
Board
Dependencies
Phases3
Tickets9
Apps2
Checks3
Activity4
9 tickets · 2 apps

Board

Every ticket by where it stands.

9 tickets
Can start now
3
Open, nothing in the way
LP-0010launch
Assessments
Course catalog · api · unblocks 1
LP-0011
Instructor tools
Course catalog · web
LP-0012
Notifications
Accounts · api
In progress
1
Started
LP-0008launch
Learner enrollment
Course catalog · api · unblocks 2
Waiting
3
Open dependencies or blocked
LP-0009launch
Course player
Course catalog · web · unblocks 1
Waiting on LP-0008
LP-0013launch
Progress tracking
Course catalog · api · unblocks 1
Waiting on LP-0008
LP-0014launch
Production readiness
Production · api
Waiting on LP-0009LP-0010LP-0013
Needs a human
0
Only a person can finish these
None
Done
2
Done or dropped
LP-0004launchDone
Learner accounts
Accounts · api
Done · 3f2a91c · tests passed
LP-0007launchDone
Course catalog API
Course catalog · api
Done · 4f2a91c · tests passed

Board: 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.

Learning Platform · ajiya serve
Learning Platform
Overview
Next up3
Board
Dependencies
Phases3
Tickets9
Apps2
Checks3
Activity4
9 tickets · 2 apps

Dependencies

What waits on what. An arrow points from a dependency to what needs it; columns go left to right by depth.

All ticketsLP-0014 waits on LP-0009, which waits on LP-0008
DoneIn progress or can startWaitingBlocked chain
No dependenciesDepth 1Depth 2Depth 3 LP-0007doneCourse catalog API LP-0004doneLearner accounts LP-0008in progressLearner enrollment LP-0010can startAssessments LP-0011can startInstructor tools LP-0012can startNotifications LP-0009waitingCourse player LP-0013waitingProgress tracking LP-0014waitingProduction readiness

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.

Learning Platform · ajiya serve
Learning Platform
Overview
Next up3
Board
Dependencies
Phases3
Tickets9
Apps2
Checks3
Activity4
9 tickets · 2 apps

Activity

Commits from the last 30 days, newest first, with the status changes they made.

2026-09-30
4f2a91c
Add course catalog endpointAjiya: LP-0007
LP-0007In progress → Done
9be07d1
Add the enrollment tableAjiya: LP-0008
LP-0008Pending → In progress
2026-09-29
3f2a91c
Add learner accountsAjiya: LP-0004
LP-0004In progress → Done
a81c3e5
Plan the Learning Platform phasesAjiya: LP-0004
LP-0004Pending → In progress

Activity: commits, newest first, with the status changes they made.

The rules

Check the evidence before you call work done.

A ticket needs commit evidence

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.

Keep each commit focused

A Git hook checks each commit. CI checks again if the hook did not run. Merges, reverts and chores are exempt.

Agents update work through commands

The CLI writes the ticket files in one format. ajiya check reports manual edits that do not match it.

Launch work follows dependencies

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.

Keep the project in your repo

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.

Use your existing tools

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.

Learning Platform · ajiya serve
Learning Platform
Overview
Next up3
Board
Dependencies
Phases3
Tickets9
Apps2
Checks3
Activity4
9 tickets · 2 apps

Checks

What ajiya check reports. Fix errors first.

1 error · 2 warnings · run ajiya check for the live list
LevelCodeWhereProblemFix
errorE002ajiya/course-catalog.md:9file 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
warningW010ajiya.toml2 open tickets in no milestone: LP-0011 LP-0012make a milestone's targets depend on them, or add a milestone for the later work
warningW007ajiya.tomlnothing required for launch mentions deployment or hostingadd a ticket for deployment or hosting that the launch target depends on
ajiya ticket done
$ 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.

Get started

Review the plan before your agent starts work.

Install Ajiya, then run ajiya init in your project. Install options are in the docs.

Start a new project
$ ajiya init
Project name? Learning Platform
Ticket prefix? LP
✓ ajiya.toml, hooks, agent kit
  1. Describe the project goal to your agent.
  2. Your agent creates phases, tickets and dependencies with CLI commands.
  3. Review launch work and tickets that need a person.
  4. Approve the plan. The agent then starts on a defined ticket.
Bring in an existing project
$ ajiya init
Apps:  api (composer.json)  web (package.json)
Plans: TODO.md · GitHub issues
✓ imported as draft tickets
  1. Import existing work without changing its wording.
  2. Group the tickets into phases and connect dependencies.
  3. Let your agent record completed work and identify missing tickets.
  4. Review the plan and choose what starts next.
Or tell your agent
New project
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.
Existing project
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.