Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TETHER_DBNoOverride the path to the local SQLite database. Defaults to ~/.local/share/tether/memory.db (or %LOCALAPPDATA%\tether\memory.db on Windows).
TETHER_ASSOCNoSet to '0'/'false'/'off' to disable the associative recall graph (makes recall read-only). Default: on.on
TETHER_AUTHORNoAttribution recorded on each memory. Defaults to the device id.
TETHER_FORGETNoSet to '1' to enable the forgetting (soft-archive) sweep. Default: off.off
TETHER_PROJECTNoOverride the project name derived from CLAUDE_PROJECT_DIR; set to 'off' to disable project awareness.
TETHER_SEMANTICNoSet to '0'/'false'/'off' to force keyword-only recall (disables hybrid search). Default: on.on
TETHER_SYNC_URLNoURL to a Turso/libSQL database to enable sync (e.g., libsql://your-db.turso.io).
TETHER_DEVICE_IDNoDevice id recorded on each memory and the default author. Defaults to hostname.
TETHER_SEED_FLOORNoMinimum cosine similarity for a semantic hit to seed an associative walk. Default: '0.35'.0.35
TETHER_SYNC_TOKENNoAuthentication token for the Turso/libSQL database.
TETHER_CONSOLIDATENoSet to '1'/'true' to enable near-duplicate merging on write. Default: off.off
TETHER_CRYSTALLIZENoSet to '1' to enable crystallization (reflection) tools. Default: off.off
TETHER_FTS_STEMMINGNoSet to '0'/'false'/'off' to disable English stemming in full-text search. Default: on.on
TETHER_PROTECT_HEADNoNumber of top direct hits locked above associations. Default: '8'.8
TETHER_EXCERPT_CHARSNoExcerpt width in characters for recall results; '0' returns full bodies. Default: '500'.500
TETHER_RECALL_BUDGETNoDefault association breadth for recall. Default: '8'.8
TETHER_BOOT_INDEX_CAPNoCurate the boot-index above this size. Default: '50'.50
TETHER_DEDUP_THRESHOLDNoCosine similarity threshold to treat two facts as duplicates. Default: '0.92'.0.92
TETHER_EMBEDDING_MODELNoOverride the local static embedding model. Default: 'minishlab/potion-base-8M'.minishlab/potion-base-8M
TETHER_FORGET_AGE_DAYSNoMinimum age (days) for a memory to be eligible to fade. Default: '90'.90
TETHER_FORGET_INTERVALNoWrites between forgetting sweeps. Default: '20'.20
TETHER_SYNC_READ_INTERVALNoSeconds between read-path sync pulls; set to '0' to only sync on writes. Default: '30'.30
TETHER_DECAY_HALF_LIFE_DAYSNoSet to a positive number to exponentially down-rank older facts in recall. Default: off.
TETHER_FORGET_MAX_PER_SWEEPNoMaximum 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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
rememberA

Save a durable memory. UPSERTS: a memory of the same type with the same (whitespace/case-normalized) title is updated in place instead of duplicated, so re-remembering a fact refines it rather than cluttering.

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 (proj:<name>, from CLAUDE_PROJECT_DIR) unless you pass a proj: tag yourself; user memories are about the person and stay global.

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 via receipt explaining why it surfaced (a direct match, or the edge it was reached through). Use updated_at to judge staleness (an old fact may no longer hold; verify before relying on it) and id to cite what you update via remember/link.

body is an EXCERPT centered on your query, not the whole memory. When a memory was longer than the excerpt, the hit also carries truncated: true and body_chars (the full length). To read one in full, call recall(id=N) - that returns just that memory, whole.

Args: query: free text; punctuation is safe. May be omitted if tags is given. type: optional filter ("user"/"feedback"/"project"/"reference"). limit: max results (default 20). budget: how far to follow associations (0 = direct matches only). session: optional id grouping related recalls so they prime each other. tags: optional comma-separated tags; exact-match filter (a memory must carry every listed tag). Combine with query to filter its ranked hits, or use alone (query omitted) to list every current memory with those tags, newest first, deterministic rather than ranked - raise limit to fetch beyond the default page size. id: fetch this one memory in full instead of searching. Use it after a search returns a truncated hit you want to read completely. full: return complete bodies for every hit instead of excerpts. Costs the whole payload - prefer id= for the one memory you actually need.

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
memory_indexA 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.
statusRead-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

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

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.

Naming Consistency5/5

All tool names are single lowercase verbs that directly describe their action: remember, recall, link, forget. The naming pattern is uniform and predictable.

Tool Count5/5

Four tools cover the core memory operations without redundancy or bloat. This is a well-scoped set for a persistent memory server.

Completeness5/5

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.

Maintenance

ActivityMaintained
ResponsivenessResponsive