palinode
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PALINODE_DIR | No | Path to the memory directory (default ~/.palinode) | ~/.palinode |
| PALINODE_API_TOKEN | No | API token for authentication when the API is exposed beyond loopback |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| palinode_session_initA | Session-start context: call this FIRST in a new conversation. Returns the resolved project scope with recent session snapshots, core memories, recent decisions, and open action items as a bounded digest. |
| palinode_listA | List memory files, optionally filtered by category or core status. Use to browse what memories exist before reading or searching. |
| palinode_readA | Read the full contents of a memory file. Use after palinode_list or palinode_search to see the complete content of a specific file. |
| palinode_searchB | Search Palinode memory for relevant context about people, projects, decisions, insights, or research. Returns the most relevant memory file excerpts ranked by configured hybrid or lexical retrieval. |
| palinode_saveA | Save a memory (fact, decision, insight, project update) worth keeping across sessions. Requires exactly one of |
| palinode_ingestA | Fetch a URL and save it as a research reference in Palinode memory. |
| palinode_statusA | Check Palinode health plus the effective read-only capture/recall pause state, policy provenance, and resolved project scope. |
| palinode_historyA | Show the change history of a memory file. Tracks renames (--follow) and includes diff stats per commit. Use detail='full' for the commit-level evolution view. |
| palinode_entitiesA | List all known entities, or get memory files referencing a specific entity. |
| palinode_consolidateA | Run a manual knowledge consolidation pass. Set |
| palinode_archive_expiredA | Archive ephemeral memories whose |
| palinode_archiveA | Retire one specific memory that is wrong or obsolete. Sets |
| palinode_restoreA | Bring one archived memory back into default recall — the inverse of |
| palinode_unretractA | Withdraw one preference's mention-level retraction from one memory: un-strikes every |
| palinode_forget_withdrawA | Take a forget request back. Given the memory that holds the request ('please forget that I…'), restores every memory it archived, un-strikes every mention it retracted, and archives the request record(s) so they stop acting as the retraction. Each step is its own audited commit; failures are reported per target. |
| palinode_diffA | Show what memories changed recently. Use to review what was learned, decisions made, or facts updated in the last N days. |
| palinode_blameA | Trace a fact back to when it was first recorded. Shows which session or commit created each line in a memory file. |
| palinode_traceA | Compose the full provenance lineage of a memory file into one view: source citations, when it was first saved and last changed, the supersession trail, typed contradiction/evidence links, and how often it has been recalled. Rows whose provenance is not yet captured render an honest placeholder. Read-only. |
| palinode_rollbackA | Revert a memory file to a previous version. Safe: creates a new commit preserving the old version in history. Defaults to dry run. |
| palinode_pushA | Sync memory changes to GitHub for backup and cross-machine access. |
| palinode_triggerA | Register or manage a prospective trigger for Palinode. When a future user message semantically matches the description, the specified memory file will be automatically injected. |
| palinode_session_endA | Call at the end of a coding or chat session to capture key outcomes to persistent memory. Writes a session summary to today's daily notes and appends status to relevant project files. Provide a brief summary of what was accomplished, decisions made, and any blockers. |
| palinode_lintB | Scan memory for health issues: orphaned files, stale active files (>90 days), missing frontmatter fields, and potential contradictions. Returns a report without modifying files. |
| palinode_reviewA | Advisory project-memory review. Composes the deterministic health signals (stale files, long-unresolved open questions, open contradictions, orphans, missing descriptions, wiki drift) scoped to a project, and proposes corrective ops (PROPOSE_ARCHIVE/UPDATE/SUPERSEDE). Read-only — proposes, never applies. Omit |
| palinode_dedup_suggestA | Given draft memory content the LLM is about to save, return the top-K existing memory files whose embeddings are semantically near it. Use BEFORE writing a new memory to decide 'create new' vs 'update existing'. Each result includes a |
| palinode_orphan_repairA | Given a |
| palinode_cluster_neighborsA | Given a memory file path, find the top-K semantically related files that are NOT currently linked to or from it (no existing [[wikilink]] in either direction). Use during wiki-maintenance passes to surface implicit relationships that no wikilink yet captures — the LLM can then propose new cross-links. Preprocessing strips wikilink syntax and the auto-generated |
| palinode_topic_coverageA | Given a topic phrase (not a file), check whether any wiki page already covers it. Returns {covered: bool, best_match: str | null, similarity: float}. Use BEFORE ingesting new content to ask 'is this already covered?'. Different framing from palinode_dedup_suggest: takes a short topic phrase rather than full draft content, and answers the binary 'already covered?' question. |
| palinode_resolveA | Ask what memory holds RIGHT NOW about a question, or about one record. Returns the assertions that stand (with their evidence and source revisions), what replaced what, conflicts with every side intact, and what is explicitly unknown. Use instead of palinode_search when you want the current answer rather than a list of hits. Read-only; a tight budget can shrink the answer but never turns a conflict into a settled one. |
| palinode_doctorA | Fast palinode health check (<500ms). Skips network probes and canary writes. Checks path integrity, config consistency, and env-var drift. Use this first; call palinode_doctor_deep when results are unclear. |
| palinode_doctor_deepA | Full palinode health check including network probes and canary write tests. Takes 10-15s. Use when palinode_doctor reports unclear results or you need to verify the API, watcher, and service connectivity. |
| palinode_promptA | List, read, or activate versioned LLM prompts stored as memory files in the prompts/ directory. Use 'list' to browse available prompts, 'read' to view a specific prompt's content, or 'activate' to set a prompt version as active (deactivates others of the same task). |
| palinode_dependsA | Return the dependency tree for a milestone or task slug, or list all unblocked items. Reads depends_on / blocks / parallel_with frontmatter from ProjectSnapshot files. Set unblocked=true to answer 'what can I work on right now?' across all slugs. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 33 tools
Many tools occupy adjacent semantic space: search/resolve/topic_coverage/dedup_suggest all answer 'what do I know about X?' and status/doctor/lint/review all probe health in overlapping ways. The descriptions are detailed enough to distinguish them, but an agent would need to read carefully to avoid misselection.
The palinode_ prefix is uniformly applied and most names follow a verb-first pattern (search, list, read, save, rollback, restore, diff). Minor deviations exist with noun-style names like status, entities, history, doctor, and prompt, plus compound verbs like archive_expired and forget_withdraw.
33 tools is well past the heavy threshold and will significantly bloat context and increase selection friction. While the memory domain has many legitimate operations, several tools could be consolidated (doctor/doctor_deep, lint/review, or the archive-related variants).
The surface thoroughly covers the full memory lifecycle: capture (ingest, save, session_end), recall (search, read, list, resolve), provenance (history, blame, trace, diff), modification (rollback, archive, restore, unretract), and maintenance (lint, review, consolidate, dedup, orphan repair). No obvious dead ends exist for the stated domain.