Open sourceMIT

The issue tracker that lives in your repo, and runs your coding agents.

LoTaR keeps tasks as plain YAML files in .tasks/, versioned and reviewed with your code. A CLI, a local web UI, a REST API and an MCP server all work on the same files. Assign a task to an agent and LoTaR runs it in its own git worktree, streams the log, and hands the work back for review.

  • CLI
  • Web UI
  • REST API
  • MCP
  • Agents
  • Sprints
Assigning a task to the claude agent profile in the web UI: the job starts in its own git worktree, its log streams live, and automation moves the task to NeedsReview

Why LoTaR

  • Tasks are files

    One YAML file per task, next to your code. Branch it, diff it, and review a task change in the same pull request as the fix.

  • Nothing to host

    No database and no account. It works offline, and every change has an author and a commit in git history.

  • Built for agents

    Coding agents read and update tasks through MCP, and LoTaR can run Claude Code, Codex, Copilot CLI, Gemini CLI and six more agent CLIs on a task for you.

Everything works on the same files

Agents and automation

Set up an agent profile once, then assign tasks to it like a teammate. Each job runs the agent CLI in a dedicated worktree on its own branch, with the output streamed live. Choose the model and effort per profile or per run, see each job's tokens and cost, and let the agent update its own task through LoTaR's MCP server. Automation rules decide what happens when a job starts, finishes or fails.

# .tasks/automation.yml
automation:
  rules:
    - name: Agent lifecycle
      when: { assignee: "@agent" }
      on:
        job_completed: { set: { status: NeedsReview } }
Agent jobs guide
Agent jobs page with a running claude job, its worktree branch, and the live log

A local web UI

lotar serve opens a task list, a board with WIP limits, sprints with burndown and velocity, a calendar, a dependency graph, and insights for every role on the team. Paste screenshots onto a task, jump anywhere with the command palette, and see changes from the CLI or an agent live.

Web UI and server
Board view with Todo, InProgress, NeedsReview, Blocked and Done columns

Make it yours

Pick Classic, High contrast, or a playful skin such as Terminal, Matrix, Synthwave, Blueprint, Paper, Retro or Candy, each in light and dark and most with several colour palettes. Everyone chooses their own theme; a repository can set the default, its name, logo and icon, and even ship its own skin.

Themes and branding
  • Board in the Terminal theme: green monospace text on black
  • Board in the Synthwave theme: neon pink and purple on dark
  • Board in the Paper theme: serif text in blue ink on warm paper
  • Board in the Retro theme: grey bevelled 90s desktop chrome

MCP server

lotar mcp lets agents in your editor or terminal list, create and update tasks, manage sprints and read config, without scraping CLI output.

{
  "mcpServers": {
    "lotar": {
      "command": "lotar",
      "args": ["mcp"]
    }
  }
}

TODO scanner

lotar scan turns TODO and FIXME comments into tasks, writes the task ID back into the comment, and follows the line when code moves.

Git history and stats

Every task change is a commit. See the commits that touched a task, and report churn, activity and authors straight from git.

Your own workflow

Define states, types, priorities and custom fields per project, or start from the default, agile or kanban template.

Jira and GitHub sync beta

Pull issues into local tasks or push changes back, with field mappings per remote. Credentials stay out of the repository.

REST API

The same operations over HTTP, described by an OpenAPI spec, with live updates over server-sent events.

A task is a file you can read

Tasks live in one folder per project. Status changes, comments and references are part of the file, so a pull request shows exactly what changed about the work, not just the code.

.tasks/
├── config.yml        # states, types, members, agents
├── automation.yml    # optional rules
├── @sprints/1.yml
└── ATLS/
    ├── 26.yml
    └── 27.yml
# .tasks/ATLS/26.yml
title: Offline edits are lost when reconnecting mid-sync
status: Done
priority: Critical
type: Bug
assignee: marco
due_date: 2026-09-29
tags: [sync, customer]
references:
  - link: https://github.com/atlas-notes/atlas/pull/412
  - code: web/src/sync/queue.ts#20-33
history:
  - at: 2026-09-28T15:12:00Z
    actor: priya
    changes: [{ field: status, old: NeedsReview, new: Done }]

Get started in a minute

1 Install

brew tap localtaskrepo/lotar && brew install lotar

2 Use it in any repository

lotar add "Fix the login redirect loop" --type bug --priority high
lotar list
lotar serve --open

The first command creates .tasks/. Commit it with your code.