Formic is an AI-powered task manager that autonomously executes coding tasks using AI agents. Each task is processed through a defined workflow — from brief, to plan, to execution — with full concurrency support and self-healing QA.
The kanban board shows tasks across all workflow stages as columns. Use the header buttons to manage settings, switch themes, and access this guide. The floating AI Assistant button (bottom-right) opens a chat panel for brainstorming and task creation.
Explore the other sections in this guide: Task Types for choosing the right type, Workflow Stages for understanding each column, and Concurrency for how parallel execution works.
Formic supports three task types, each with a different workflow suited to the complexity of the work.
Full workflow: Brief → Plan → Declare → Run. The AI generates a feature spec (README.md), creates an implementation plan (PLAN.md + subtasks.json), declares file leases for concurrency, then executes the implementation.
Best for: new features, refactors, complex bug fixes — any work that benefits from up-front planning.
Single-step execution — skips briefing and planning, goes directly from Queued to Running. Faster but with no spec or plan document generated.
Best for: typo fixes, small one-liner changes, documentation updates, or tasks where the description is already complete.
High-level objective — the Architect skill decomposes it into 3–8 child tasks with a dependency graph (DAG). Each child task then runs independently through its own standard or quick workflow.
Best for: large epics, multi-file features, or any goal that is too broad for a single task to implement safely.
Each kanban column represents a workflow stage. Tasks progress left-to-right as they are processed.
| Stage | Description |
|---|---|
Todo | Task created, not yet queued. Awaits manual queuing. |
Queued | In the priority queue. Will be picked up when a worker slot is available. |
Briefing | AI is generating the feature specification document (README.md). |
Planning | AI is creating PLAN.md and a structured subtasks.json file. |
Declaring | Task declares which files it will modify (exclusive leases) or read (shared leases) for concurrency control. |
Running | AI agent is actively executing the implementation. |
Architecting | Goal task is being decomposed into child tasks by the Architect skill. |
Verifying | Self-healing QA loop is running checks on the completed implementation. |
Review | Implementation complete. Awaiting human inspection and approval. |
Done | Approved and complete. |
Blocked | Task is waiting on one or more dependency tasks to complete first. |
The AI Assistant is a chat panel in the bottom-right corner of the board. It is context-aware — it knows your current codebase and board state — and can help with brainstorming, task creation, and answering questions.
task-create block that the server automatically processes into a new task.The assistant creates tasks by outputting a task-create code block in the chat:
```task-create
{
"title": "Add login page",
"context": "...",
"priority": "medium",
"type": "standard"
}
```
The Formic server detects this block and automatically calls POST /api/tasks to create the task on the board.
Formic can run multiple tasks in parallel. To prevent conflicting writes, it uses a file lease system managed by leaseManager.ts.
During the Declaring stage, a task explicitly declares which files it will touch:
When a task requests an exclusive lease on a file that is already held exclusively by another running task, it yields — it pauses and re-queues itself to wait. Once the conflicting lease is released, the yielded task is picked up again automatically.
Shared-lease files use optimistic concurrency: conflicts are detected at merge time via git hash-object collision detection. If two tasks read the same file and both modify it, the second to merge will detect the collision and trigger a resolution step.
Leases expire after a configurable duration (default: 5 minutes). A background watchdog process periodically cleans up expired leases to prevent deadlocks if a task crashes without releasing its leases.
After a task finishes execution, Formic optionally runs a Verifier step that checks the implementation before it reaches Review. If verification fails, a Critic automatically creates a fix task.
Tasks that pass verification move to Review as normal. Tasks that fail have their fix tasks run first; once the fix is complete and verified, the original task proceeds to Review.
A Goal task represents a high-level objective. Instead of running code directly, a Goal task triggers the Architect skill, which breaks it into 3–8 concrete child tasks with a dependency graph (DAG).
depends_on list.parentGoalId. Tasks with no dependencies are queued immediately; dependent tasks are Blocked.depends_on: ["sibling-task-id", ...] in the architect output.Child tasks appear as regular task cards on the board. Open any child task to see its parentGoalId link, which takes you back to the original Goal task.
| Shortcut | Action |
|---|---|
| Escape | Close the active panel (Help, Settings, AI Assistant, modals) |
| Enter | Send message in the AI Assistant chat input |
| Shift+Enter | Insert newline in the AI Assistant chat input |
Open Settings via the ⚙ button in the header. Changes take effect immediately and are persisted in the browser's local storage.