dreamd
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
dreamd memory server -- search and append agent memory (events + lessons).
WHEN TO CALL search_nodes
At the start of the current task, with the user's request as the query
Session start on any domain you have worked in before (language, framework, project area)
Before reasoning from scratch on a topic; you may already have a relevant note
Use 2-4 keywords matching the current task
Hits may be raw events (source=episodic) or consolidated lessons (source=semantic); there is no layer filter
If a hit overlaps the task, quote one line and its id. If the search is empty, say nothing about memory
WHEN TO CALL append_node
When the user corrects you or states a decision; put those same words in content
End of session: capture discoveries, constraints, and non-obvious patterns
Mid-session: anything that would have saved 10+ minutes if known at the start
One precise node beats several vague ones
skill_action FORMAT
Lowercase [a-z0-9_] segments joined by "::" -- no dots, hyphens, or slashes
Examples: "rust::async::tokio", "echos::audit_pattern", "python::benchmark"
Max 256 bytes
SCORES (0-10)
importance: how broadly applicable across sessions (8+ changes behavior on familiar domains)
pain: how disruptive if unknown (8+ causes bugs, rework, or failed attempts)
Call GET /api/v1/preferences at session start to read per-user thresholds
client_dedup_key
Set when the same learning could be written twice in a session
Use a stable slug: "session:YYYY-MM-DD:skill.topic"
DO NOT STORE
Task status, progress notes, or ephemeral in-session state
Anything directly readable from docs, source, or git log
Conversation summaries or role-play context
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| append_nodeA | Append a raw episodic event -- use when: the user corrects you, the user states a decision, note that, remember, log this, save this lesson. Writes AGENT_LEARNINGS.jsonl, not LESSONS.md; lessons come from the dream cycle. Put the user's own words in content. One precise event beats several vague ones. |
| search_nodesA | Search memory (events + lessons) at the start of the current task -- use when: the user's request, recall, did we discuss, what did we decide, previously decided. Hits mix raw events (source=episodic, recent/specific) and consolidated lessons (source=semantic, recurring patterns), ranked together by BM25 × salience. There is no layer argument. Factor citations are on GET /api/v1/recall?explain=1 only; this tool does not take explain. Pass plain words from the user's request: a colon is query syntax, and a skill_action pasted as the query fails. |
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 2 tools
append_node (write an episodic event) and search_nodes (read events + lessons) are clearly opposite operations with explicit 'use when' triggers that prevent misselection. The shared abstract noun 'node' and the embedded HTTP-API references (recall?explain=1) add minor noise but do not create real overlap.
Both tools follow the same verb_noun snake_case pattern and share the '_node' resource suffix, making the pair predictable and symmetric (write vs. read).
Two tools is on the thin side for a memory server; the write and recall pair covers the core loop but leaves nothing for management operations. Borderline rather than inappropriate.
The essential write-then-recall lifecycle is present, and lessons are intentionally produced by the dream cycle rather than a tool. However there is no way to delete/forget a bad memory, update or correct an event, or fetch a specific node by id, which are notable gaps for a memory domain.