Your AI forgets everything between conversations. FocalPoint fixes that.
Not just memory — cognitive infrastructure. FocalPoint tracks your projects, prepares context before tasks, uses a Three-Province review system for quality decisions, and proactively alerts you about stuck work.
AI agents are stateless. Every conversation starts from zero — no memory of your projects, decisions, or progress. You waste time re-explaining context and manually tracking what's stuck.
Existing solutions only go halfway:
ToolWhat it doesWhat it doesn't doMem0 / ZepRemembers conversationsDoesn't track tasks or alert youLangGraph / CrewAIOrchestrates agentsNo persistent cognitive layerClaude / OpenAI memoryRemembers preferencesDoesn't manage work or deadlines
They remember what was said. FocalPoint manages what needs to be done.
CapabilityMem0ZepLettaCrewAIClaudeFocalPointPersistent memoryYesYesYesYesYesYesTask lifecycle management---Partial-YesDependency graph (DAG)-----YesProactive alerts-----YesKnowledge docs + inheritance----PartialYesRole-based context---Partial-YesDecision review workflow-----YesFull-text searchVectorVectorVector--FTS5MCP native----ProprietaryYesSelf-hosted, zero depsPartialPartialYesYes-Yes
No competitor combines structured task management + proactive alerts + knowledge inheritance + role-based context + review workflow in a single MCP-native package.
bash
pip install focalpoint
yaml
# openclaw.yaml
mcp_servers:
fpms:
command: focalpoint
That's it. 22 tools are now available.
text
Brain (LLM) Spine (FocalPoint engine)
| |
| -- Tool Call --> | Validate -> Write SQLite -> Narrative -> Audit
| |
| <-- Context --- | Assemble L0/L1/L2 -> Trim -> Inject prompt
text
SQLite <- Single source of truth
events.jsonl <- Audit trail
narratives/*.md <- Append-only logs
knowledge/{id}/ <- Design documents
No vector database. No Redis. No PostgreSQL. One SQLite file is everything.
text
You: "Work on the payment system task"
AI calls activate_workbench(node_id, role="execution")
-> Returns: goal, knowledge docs, context bundle, sorted subtasks,
suggested next step, and execution role prompt
-> AI enters role, reads background, starts working
RoleFocusSeesStrategy (Maker)Should we do this? Priority?Decisions + feedbackReview (Reviewer)Any risks? Historical lessons?Risk notes + progressExecution (Engineer)How to build it? Acceptance criteria?Technical details + progress
Same data, different thinking modes. The role prompt guides the AI's perspective.
For major decisions (new features, architecture changes, tech choices):
text
Strategy produces requirements
|
Review + Engineer review in parallel
|-- Review: checks risks, historical lessons -> approve/reject
|-- Engineer: evaluates feasibility -> approve/reject
|
Both approve -> proceed to execution
Either rejects -> revise and resubmit
|
> 3 rejections -> escalate to human
text
You: "Save this architecture doc to the project"
AI calls set_knowledge(project_id, "architecture", content)
-> Child tasks inherit parent knowledge automatically
-> AI reads project overview without you re-explaining
Types: overview | requirements | architecture | custom names
text
append_log(node_id, content, category="decision") # Decision records
append_log(node_id, content, category="feedback") # User/market feedback
append_log(node_id, content, category="risk") # Risks and lessons
append_log(node_id, content, category="technical") # Technical details
append_log(node_id, content, category="progress") # Progress updates
append_log(node_id, content, category="general") # Default
Different roles see different categories. Strategy sees decisions + feedback. Execution sees technical + progress.
text
You: "Create a project for the product launch with 3 tasks"
(Next day)
You: "What's the launch status?"
AI: "3 tasks: 1 done, 1 active, 1 blocked. The blocked task
is waiting on design review — it's been 2 days."
text
You: "We're going with Stripe for payments"
AI: append_log(node_id, "Chose Stripe — better API, lower fees", category="decision")
(Two weeks later)
You: "Why did we pick Stripe?"
AI: Searches decisions -> "You decided on March 15 — better API and lower fees."
text
AI automatically runs heartbeat and finds:
- Deploy task BLOCKED for 4 days
- Docs update STALE — no activity for a week
- Bug fix AT RISK — deadline is tomorrow
text
You: "Find everything related to caching decisions"
AI: search_nodes(query="caching decisions")
-> Finds nodes by title, narrative content, and knowledge docs
ToolWhat it doescreate_nodeCreate a project/task/goal/milestoneupdate_statusChange status (inbox/active/waiting/done/dropped)update_fieldUpdate title, summary, deadline, etc.attach_node / detach_nodeMove tasks in hierarchyadd_dependency / remove_dependencyManage task dependenciesappend_logRecord decisions, progress, risks (with category)unarchiveRestore completed/dropped tasksset_persistentProtect tasks from auto-archiveset_knowledgeAttach knowledge documents to nodes
ToolWhat it doesget_nodeGet full details of a work itemsearch_nodesFind tasks by filters or full-text searchget_knowledgeRead knowledge with parent inheritancedelete_knowledgeDelete a knowledge documentget_assembly_traceDebug context assembly
ToolWhat it doesbootstrapLoad memory context (call at conversation start)heartbeatScan for risks: blocked, stale, at-risk tasksactivate_workbenchPrepare working context with role + knowledgeget_context_bundleGet role-filtered, token-budgeted context
ToolWhat it doessansei_reviewThree-Province parallel review
ToolWhat it doesshift_focusSwitch AI attention to a specific task
Follow these rules in EVERY conversation:
bootstrap to load memoryactivate_workbench to prepare contextappend_log with category="decision"append_log with category="risk"update_statusset_knowledge to persist for future sessionsappend_log key takeawaysheartbeat to check for risksMetricValueTests665MCP Tools22External dependencies0 (pure SQLite)Cold start< 100msSupported LLMsAny (via MCP protocol)PlatformsClaude Desktop, OpenClaw, any MCP client