tether
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TETHER_DB | No | Override the path to the local SQLite database. Defaults to ~/.local/share/tether/memory.db (or %LOCALAPPDATA%\tether\memory.db on Windows). | |
| TETHER_ASSOC | No | Set to '0'/'false'/'off' to disable the associative recall graph (makes recall read-only). Default: on. | on |
| TETHER_AUTHOR | No | Attribution recorded on each memory. Defaults to the device id. | |
| TETHER_FORGET | No | Set to '1' to enable the forgetting (soft-archive) sweep. Default: off. | off |
| TETHER_PROJECT | No | Override the project name derived from CLAUDE_PROJECT_DIR; set to 'off' to disable project awareness. | |
| TETHER_SEMANTIC | No | Set to '0'/'false'/'off' to force keyword-only recall (disables hybrid search). Default: on. | on |
| TETHER_SYNC_URL | No | URL to a Turso/libSQL database to enable sync (e.g., libsql://your-db.turso.io). | |
| TETHER_DEVICE_ID | No | Device id recorded on each memory and the default author. Defaults to hostname. | |
| TETHER_SEED_FLOOR | No | Minimum cosine similarity for a semantic hit to seed an associative walk. Default: '0.35'. | 0.35 |
| TETHER_SYNC_TOKEN | No | Authentication token for the Turso/libSQL database. | |
| TETHER_CONSOLIDATE | No | Set to '1'/'true' to enable near-duplicate merging on write. Default: off. | off |
| TETHER_CRYSTALLIZE | No | Set to '1' to enable crystallization (reflection) tools. Default: off. | off |
| TETHER_FTS_STEMMING | No | Set to '0'/'false'/'off' to disable English stemming in full-text search. Default: on. | on |
| TETHER_PROTECT_HEAD | No | Number of top direct hits locked above associations. Default: '8'. | 8 |
| TETHER_EXCERPT_CHARS | No | Excerpt width in characters for recall results; '0' returns full bodies. Default: '500'. | 500 |
| TETHER_RECALL_BUDGET | No | Default association breadth for recall. Default: '8'. | 8 |
| TETHER_BOOT_INDEX_CAP | No | Curate the boot-index above this size. Default: '50'. | 50 |
| TETHER_DEDUP_THRESHOLD | No | Cosine similarity threshold to treat two facts as duplicates. Default: '0.92'. | 0.92 |
| TETHER_EMBEDDING_MODEL | No | Override the local static embedding model. Default: 'minishlab/potion-base-8M'. | minishlab/potion-base-8M |
| TETHER_FORGET_AGE_DAYS | No | Minimum age (days) for a memory to be eligible to fade. Default: '90'. | 90 |
| TETHER_FORGET_INTERVAL | No | Writes between forgetting sweeps. Default: '20'. | 20 |
| TETHER_SYNC_READ_INTERVAL | No | Seconds between read-path sync pulls; set to '0' to only sync on writes. Default: '30'. | 30 |
| TETHER_DECAY_HALF_LIFE_DAYS | No | Set to a positive number to exponentially down-rank older facts in recall. Default: off. | |
| TETHER_FORGET_MAX_PER_SWEEP | No | Maximum memories archived per sweep. Default: '10'. | 10 |
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
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| rememberA | Save a durable memory. UPSERTS: a memory of the same Worth remembering: decisions and their reasons, conventions, gotchas that cost time, the user's preferences and how they like to work, facts about the environment (paths, commands, accounts) you had to discover. Not worth it: anything derivable from the code, or a transcript of what you did. Remember it when you learn it, not at the end of the session. Memories of type project/feedback/reference are tagged with the current
project automatically ( Args: type: one of "user", "feedback", "project", "reference". title: a short label; also the dedup key within a type. body: the fact. For feedback/project, a "Why:" / "How to apply:" line helps. tags: optional comma-separated tags. links: optional list of related memory ids. Merged (union) into any links already on the memory, never replaces them - omitting this on a refine call preserves links set earlier. crystallizes: optional list of source memory ids this memory abstracts; links it over them as a crystallized principle (needs TETHER_CRYSTALLIZE). Returns {"id", "action"} where action is "created", "updated", or (with TETHER_CONSOLIDATE on) "consolidated" - a near-duplicate was superseded. |
| recallA | Search memories by keyword and semantic similarity, then follow the usage graph to related memories, most relevant first. Ask in plain language, the way you would ask a colleague ("how do we run the integration tests?", "what did the user decide about the auth library?") - a memory matching some of the words is a hit, and the best match ranks first. Recall BEFORE starting a task, not only when stuck: the index you were given at session start is titles only. Memories from the current project rank slightly ahead of equally-good ones from elsewhere. Each hit carries {id, type, title, body, tags, updated_at} and a
Args:
query: free text; punctuation is safe. May be omitted if |
| linkB | Create a bidirectional link between two memories by id. |
| forgetA | Soft-delete a memory by id: marks it no longer current (excluded from recall/the boot index) but keeps the row, reversibly, like consolidation and the forgetting sweep already do. Returns {"forgotten", "existed"}. (Permanent purge is an admin-only CLI operation, not available here.) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| memory_index | A compact index of memories - one line per memory as `[type] #id title`. When the server knows which project it is serving (CLAUDE_PROJECT_DIR or TETHER_PROJECT), a `# This project` section comes first, then `# Everything else`; a large store is curated to the most load-bearing and most recent memories. Auto-loaded each session so memory helps even without an explicit recall; these are titles only - call recall() with a question, or recall(id=N), to read the ones that matter for the task. |
| status | Read-only runtime status (#51): what's actually active right now, since several features (semantic recall, sync) degrade silently by design. Pull-only like tether://crystallization - not auto-loaded. |
TDQS
Scored across 4 tools
Each tool has a clearly distinct role: remember writes/upserts, recall searches/reads, link creates relationships, and forget deletes. There is no overlap or ambiguity between the four operations.
All tool names are single lowercase verbs that directly describe their action: remember, recall, link, forget. The naming pattern is uniform and predictable.
Four tools cover the core memory operations without redundancy or bloat. This is a well-scoped set for a persistent memory server.
The set provides full lifecycle coverage: create/update via remember, read via recall, delete via forget, plus relation management via link. No essential memory operation is missing.