Agentic Task System (ATS)

by renezander030

6 stars
276 downloads
Not rated
GitHub Website

About

MCP server + CLI that turns the task manager you already use into persistent agent memory for Claude Code and any MCP client. Hybrid retrieval (RRF), no vector database. Adapters: TickTick, Obsidian, Notion, GitHub, Airtable, Google, OKF, Taskmaster, Beads.

Details

Author
renezander030
GitHub stars
6
Downloads
276
Categories
AI, Project Management, Other, Productivity

- Two-way bus for agent reads and writes.
- First-fetch relevance via hybrid RRF-fused retrieval.
- Durable typed links (decision, depends-on, output, supersedes).
- Execution context: intent, lifecycle, security, ledger, promote, hierarchy.
- Bounded NDJSON events with recovery and dedup.
- Task graph linking structured nodes with proof and edges.
- Session-index handoff for durable task-linked summaries.
- Curated at write time using “trunk” themes.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Agentic Task System (ATS)
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install the CLI and an adapter globally (npm install -g @reneza/ats-cli @reneza/ats-adapter-ticktick), configure with ats config use ticktick, authenticate with ats auth login, then query with ats find "deployment runbook". For MCP clients, install @reneza/ats-mcp and set the ATS_ADAPTER environment variable; the binary (ats-mcp) works over stdio with Claude Code, Claude Desktop, Cursor, Windsurf, and OpenCode.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "agentic task system (ats)": {
            "ats": {
                "command": "ats-mcp",
                "env": {
                    "ATS_ADAPTER": "@reneza/ats-adapter-ticktick"
                }
            }
        }
    }
}

McpServers

{
    "ats": {
        "command": "ats-mcp",
        "env": {
            "ATS_ADAPTER": "@reneza/ats-adapter-ticktick"
        }
    }
}

Your task manager is the best agent memory you're not using.

atsis anMCP server and CLI that keeps AI-agent context in the task systems you already maintain— TickTick, Taskmaster, Beads, Obsidian, Notion, GitHub, Airtable, Google, or several at once through thecomposite adapter. It retrieves relevant tasks, notes, decisions, and runbooks with provenance, then can write results back when the active adapter supports writes. Works with Claude Code, Claude Desktop, Cursor, and any MCP client.

Adapter, not migration.Your task app, repository, or vault remains authoritative. ATS maps that source into a common task contract; optional caches and vector indexes improve retrieval but never become a second record that people must edit. It istask-first: the task is the spine, while supporting material such as GitHub issues and Notion specs is retrieved as context behind it.

npm install -g @reneza/ats-cli @reneza/ats-adapter-ticktick ats config use ticktick ats auth login ats find "deployment runbook"

Oneats findacrossGitHub + Notion + TickTick. ATS ranks the available retrieval branches with RRF and retains result provenance.

ATS separates the authoritative record from the retrieval machinery around it:

AI client or operator | | local stdio, or token-gated HTTP when self-hosted v ATS CLI / MCP server | +-- Core: task contract, links, lifecycle, ledger, events +-- Retrieval: keyword + native + optional dense branches -> RRF | v Adapter boundary (auth, mapping, reads, patch-style writes) | +-- TickTick / Notion / GitHub / Airtable / Google +-- Obsidian / Taskmaster / Beads / OKF files | +-- derived retrieval state corpus cache + optional Qdrant/Ollama index

- The backend remains authoritative.ATS does not ask users to edit a duplicate memory database. Writes go through the active adapter, which owns backend-specific authentication, field mapping, and deep links.
- Retrieval state is derived, not canonical.Core keeps a five-minute corpus cache by default. Dense retrieval is optional: adapters can provide embeddings, and the TickTick reference adapter can use Qdrant plus Ollama. Without vectors, keyword and adapter-native branches still run.
- Credentials stay at the adapter boundary.A composite adapter delegates authentication to each child and stores no additional cross-source credential. Its children still execute inside one ATS process; this is routing separation, not process isolation. Local stdio does not expose an MCP port. The hosted blueprint adds a bearer-token gateway, private Qdrant/Ollama services, and a separate public demo backend for the optional operator deck.
- Core reports the failures it can see.Retrieval branches and top-level composite corpus failures returndegradedandwarnings. Known omission paths inside adapter fallbacks are called out under
Tradeoffs and limits.
- State changes are traceable.Results carry source provenance;find --explainexposes RRF contributions; writes use patch semantics, and supported writes can retain before-images for undo.

The corpus cache can contain full task records; the query log contains search text; the action ledger can contain write before-images; and Qdrant payloads can contain task text and metadata in addition to embeddings. ATS does not apply application-level encryption or runtime redaction to these copies. Scope host access, backups, retention, and deployment to the sensitivity of the underlying task systems. Seeretrieval,state integrity, and thedeployment guidefor the exact behavior.

“No migration” means no second source of truth. It does not mean zero derived storage.

ATS is a good fit when operational context already lives in task systems or connected work tools and agents need ranked, traceable retrieval across them. If clean Markdown is already the complete source of truth and whole-file loading stays small, a file-native workflow may be simpler.

- A two-way bus.The agent reads the task fields an adapter provides; where the adapter supports writes, it writes results back where you'll see them.
- First-fetch relevance.Capability-driven branches — keyword and adapter-native search, plus dense retrieval when available — are RRF-fused with provenance to reduce repeated search-and-refine loops.
- Durable typed links.One agent attaches adecision/depends-on/output/supersedeslink; a later agent in a fresh context receives it viaats context. The handoff lives in the task app, not a chat log.
- Execution context.ats intentcaptures outcome/why/done-when;ats lifecyclekeeps stale context from steering current work;ats securityrecords scoped allow/deny decisions for cooperating clients;ats ledgerrecords what an agent did and whether the task advanced;ats promoteturns exploration into a committed goal;ats hierarchy evaluatechecks local work still supports its parent.
- Bounded events.ats events watch --jsonemits deterministictask.created/updated/completed/...NDJSON, spooled0600with pending/ack recovery and stable dedup IDs. ATS only emits observations — a consumer still evaluates intent, validity, and security before acting.
- Task graph for agents.Tasks become structured nodes with proof, writeback, review, lifecycle, and link edges instead of free-form memory text; see
docs/task-graph-for-agents.md.
- Session-index handoff.Coding-agent session browsers can keep raw transcript analytics while ATS stores the durable task-linked summary; see
docs/agent-session-index.md.

ATS-managed execution metadata can be encoded in the task body, with typed links under## Relatedand consulted sources under## References. Managed helpers are designed to preserve human-authored rows and links, but a direct content update can replace the complete body; callers should read first, write the smallest intended change, and verify the result.[npm run prove:intentruns a deterministic synthetic proof of the execution-context path.
- Select and verify an adapter:ats config use <adapter>, authenticate as its README describes, then runats doctor.
- Retrieve the working set:ats find "deployment runbook" --jsonranks the branches available from that adapter and retains provenance.
- Inspect the authoritative item and its context:ats context <project> <task>uses the common adapter contract and does not require an adapter-specific notes layer.
- Attach durable execution context:ats intent set <project> <task> --outcome "..." --done-when "a,b"andats link add <src-project> <src-task> <dst-project> <dst-task> --type depends-on.
- Verify the assembled handoff:rerunats context <project> <task>to read back linked decisions, dependencies, proof, lifecycle state, and relevant retrieval results.
- Write through the adapter or source app, then read back.Keep the authoritative backend current so the next agent receives durable state rather than a chat-only handoff.

The optionaloperator deckis a static phone-oriented web app deployable toCloudflare Pages. The suppliedRenderblueprint builds the MCP gateway/server plus private Qdrant and Ollama services.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.