A task manager that remembers
April 28, 2026
Kakka is named after the Tamil word for raven. Crows are known for remarkable long-term memory and fine-grained problem-solving. The app tries to bring those same qualities to task management: Kakka is a task manager that remembers.
The problem with flat lists
A flat list answers “what tasks do I have?” but not:
- “What tasks are connected to the
worktag?” - “What did I move to done this week?”
- “Which projects share the
urgenttag?” - “Show me everything related to Task #3”
MemPalace
Every task action — create, update, delete — syncs into a temporal knowledge graph called MemPalace. Tasks, tags, projects, and statuses become entities connected by typed relationships:
task:1 --has_tag--> tag:work
task:1 --belongs_to--> project:kakka
task:1 --has_status--> status:todo
The temporality is the clever bit. When a task moves from todo to progress, the old triple isn’t deleted — it gets a valid_to timestamp, and a new triple with valid_to = null is created. Queries filter to current facts; the timeline endpoint gives you the full history.
A chat engine with no LLM
The chat interface is a pure Python pattern matcher — no LLM, no external API, no model weights. It runs a pipeline of regex matchers:
- Action patterns (“mark #3 done”, “start #1”)
- Task creation (“add task X with description Y”)
- Tag / status / project filters
- Entity name and
#IDlookups - Keyword search fallback
Responses render with markdown and turn [Task #3](task:3) references into clickable pills. It’s surprisingly capable for something with zero inference cost.
Stack
- Frontend: Astro 6 + TailwindCSS 4 + vanilla JS (no React, no Svelte)
- Backend: FastAPI + SQLAlchemy async + SQLite
- Visualization: vis-network force-directed graph
- Package manager: Bun
The name, the graph, and the no-LLM chat engine are the parts I’m proudest of. Source at github.com/im-ng/kakka.
Written as part of kakka.