Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/Pseudogiant-xr/Pseudolife-MCPWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/pseudogiant-xr/pseudolife-mcp/dream)<a href="https://agentmods.dev/commands/pseudogiant-xr/pseudolife-mcp/dream"><img src="https://agentmods.dev/badge/commands/pseudogiant-xr/pseudolife-mcp/dream/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/pseudogiant-xr/pseudolife-mcp/dream"><img src="https://agentmods.dev/badge/commands/pseudogiant-xr/pseudolife-mcp/dream.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00026 | $0.02321 |
| Opus 5.5 | $0.00010 | $0.00928 |
| Sonnet 5.5 | $0.00005 | $0.00464 |
| Haiku 4.5 | $0.00003 | $0.00232 |
Grade A, and why
dream scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 150 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Run a judgment session over the Pseudolife-MCP bank. The pipeline halves
run themselves — the auto-sweep extracts facts through the configured
extractor, and a need-based tick applies the deep dream's mechanical half
(rescore, guarded junk deletes, scope stamping, proposal filing, analyzer
duplicate filing, the unreachable-orphan sweep, snapshot-first). Since
2026-09-02 the sweep also judges every queue itself (merge second opinion,
link, junk, store-curation and candidate judges — each mode-gated, see
docs/runbooks/deep-dream.md §0), so what this command meets is the
residue: rows whose verdict sat below a gate, a split second opinion, a
low_differential accept, a junk delete above the evidence bar. Every
such row carries the judge's judge / judge2 blocks — treat them as
leads, read the evidence, and disagree freely.
memory_dream, memory_graph_review and memory_forget need the full
tool tier: if your client does not list them, call
memory_toolset(action="expand") (one tier per call) until it reports
current: "full", then rediscover tools.
- Call
memory_dream(action="status")and read four things:deep_dream—{recommended, reason, new_entities, days_since}: whether the mechanical pass is due. The tick normally handles this; ifrecommendedis still true (tick disabled, or the daemon just restarted), runmemory_dream(action="deep", apply=true)yourself — the daemon snapshots the graph tables first (snapshotin the response is the undo file); asnapshot_failederror means nothing was changed — investigate, don't retry blindly. Otherwise runmemory_dream(action="deep")(dry-run) to fetch the queues with evidence snippets.- the extractor fields (
primary_url/fallback_url): whether this deployment has ANY automatic cortex writer. backlog/would_fire: whether unconsolidated memories are waiting for the next sweep.review_queue— pending merge / junk / link counts, the age of the oldest pending merge, each judge's mode, andattention: {needed, reasons}. Whenattention.neededis true, tell the user the reason before triaging: a judge left inshadow/off, or one configured but not running, keeps refilling the queue this session clears. Itsjudge_agreementblock scores every recorded judge vote against the human or agent decision that followed (per queue and opinion:voted,agree,precision;agreed_twoandmajority_threefor what the two-vote and tiebreak gates would have applied). When a judge mode is inshadow, report that number with the queue counts: it is what a promotion rests on.
- ONLY when no extractor endpoint is configured (primary and fallback
both null) or both are unreachable: you are this deployment's only
cortex writer — run the manual extraction pass:
memory_dream(action="pull")(default limit).- From the pulled text, extract only durable, current-state,
slot-shaped facts as
(entity, attribute, value). Skip narrative, in-progress work, and superseded states. Reuse existing slot keys where they fit. - Write each with
memory_fact_set(originuseronly for things the human stated; otherwiseagent). If the fact is a MEMBER of a set the user maintains (bikes owned, pending tasks), usememory_set_add/memory_set_removeinstead —memory_fact_seton a set-valued slot errors and names the right tool. memory_dream(action="commit", commit_token=<token from the pull>).- Surface any
contestedresults to the user — those are conflicts to settle, not silent overwrites (an add onto a number-led scalar parks as a contender by design;member_cappedmeans the 100-member cap was hit).
- Work the returned
candidates(Step C). For each pair, judge from thesrc_snippets/dst_snippetsevidence, never from names alone:- Related (one uses/contains/produces the other, etc.): submit via
memory_graph_review(action="propose", proposals=[{src, relation, dst, rationale}])with a specific relation and a one-line rationale. - Distinct (similar names or shared context only — e.g. opposite verbs,
siblings under one parent):
memory_graph_review(action="dismiss_pair", src=..., dst=...)so the pair never resurfaces and stops occupying a top-k slot. - Unsure: leave it — the pair stays visible in the Console's Review queue. Do not guess.
- Related (one uses/contains/produces the other, etc.): submit via
- Triage the returned
merge_proposals(near-duplicate entities, mostly from the write-time dedup detector). Each carries per-sidedisplay,etype,degree,scopes, andsnippets; accepting foldsfromintointoas shown — the direction is re-derived from current evidence at both display and accept time, so an accept earlier in the batch can flip a later pair's direction. Rows sharing agroupvalue pivot on one entity and are ONE where-does-it-belong decision: accept at most one of them (the first accept deletes the shared entity), and settle the others with reject/dismiss or leave them. Rows may carry ajudgeblock — the sweep's shadow pre-judgment (verdict/confidence/note + which model): treat it as a lead, not a decision; verify every accept against the evidence yourself (the shipped judge floor is measured in evals/results/judge-ladder-20260816.json). Judge from the snippets, never names alone — the bank's confirmed-distinct history (postgres vs postgres.py) is exactly why:- Same referent (naming-layer variants of one thing — file suffixes,
abbreviations, display drift):
memory_graph_review(action="accept_merge", proposal_id=...). The merge applies immediately (the graph snapshot from step 1 is the undo artifact) and is logged to the recent-merges audit as decided_by=agent. - Distinct things:
memory_graph_review(action="reject_entity", proposal_id=...)ANDmemory_graph_review(action="dismiss_pair", src=..., dst=...)so the pair never re-proposes. - Unsure: leave pending for the Console's Review view. Do not guess; scopes that don't overlap are a strong distinct signal.
- Same referent (naming-layer variants of one thing — file suffixes,
abbreviations, display drift):
- Triage the junk verdict — over-extraction artifacts the analyzer wants
pruned. The dry-run reports them as
would_junk({entity, reason, already_proposed}); apply reports ajunk_proposedcount and files them in the review queue, wherememory_graph_review(action="list")surfaces ajunk_candidatefinding whoseentitiescarry theidyou need. Judge by thereason:- Artifact (
concat-artifact,list-artifact,compound-artifact,bare-number,status-word…):memory_graph_review( action="accept_junk", proposal_id=...). This DELETES the entity — the step-1 snapshot is the only undo. - A real thing that merely looks thin — short, weakly-connected names
are often legitimate ("Go", "uv"):
memory_graph_review(action="reject_entity", proposal_id=...). - Unsure: leave it pending for the Console's Review view. Junk deletion is the one irreversible verdict in this flow — the step-1 snapshot is the only undo (lesson/world forgets below are reversible; see step 6).
- Artifact (
- Triage the returned
lesson_duplicates/world_duplicates(cross-key near-duplicate slots in the lesson / world stores; listing-only — the dream never deletes them). Judge from the per-side values:- Duplicate: keep the better-keyed slot and drop the other via
memory_forget(scope="lesson"|"world", ...). This RETIRES the slot rather than deleting it (row kept,store_decisionsaudit row) — a wrong call is undoable withmemory_graph_review(action="restore_slot", store="lesson"|"world", src="<entity>|<attribute>"), so lean toward acting rather than leaving a genuine duplicate pending. When the dropped slot says something the survivor does not:- world: the listing truncates values, and a rewrite keeps only
what the new call passes. Read both slots in full with
memory_world_searchfirst. Rewrite the survivor withmemory_world_setonly when one record's source backs the whole merged value, re-passing that record'ssource_url,source_quote,freshness_classandretrieved_at, then drop the other. Otherwise leave the pair listed and report it. - lesson: no tool writes lesson text (lessons are distilled from outcomes), so retire the dropped lesson only when the survivor already says everything it does. Otherwise leave the pair listed and name the missing point in your report.
- world: the listing truncates values, and a rewrite keeps only
what the new call passes. Read both slots in full with
- Distinct:
memory_graph_review(action="dismiss_slot_pair", store="lesson"|"world", src=<a_key>, dst=<b_key>)so the pair never re-lists. - Unsure: leave listed. Do not guess.
- Duplicate: keep the better-keyed slot and drop the other via
- Report: what the mechanical pass did (or that the tick already had),
proposed / dismissed counts, merges you applied or rejected (they appear
under "Merge decisions" in the Review view's "Recent decisions" panel,
beside the accept-rate stat),
junk entities deleted or kept, lesson/world pairs settled, contested
facts if step 2 ran, and the snapshot filename. Link proposals still
need a human verdict (
accept_link/reject_linkor the Review view).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago Changed · +6 lines e101854a5c4c
- 11d ago Changed · +11 lines 6efa5b4472d1
- 22d ago Changed · +5 lines e54fc5170f48
- 25d ago Changed · +1 lines 1609c9e659bd
- 28d ago Changed · +5 lines b75b5aa19d66
- 1mo ago Changed · -1 lines 8852aff946d5
- 1mo ago Changed · -2 lines · +26 tokens per session scan C → A 5754cfba8c0a
- 1mo ago Changed · +12 lines 0cfb11b1dceb
- 1mo ago First seen · 113 lines · 0 tokens per session scan C f830eae2d219
dream is a command published in the GitHub repository Pseudogiant-xr/Pseudolife-MCP (6 stars, last pushed today), licensed Apache-2.0. It adds 26 tokens to every session and 2,321 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
arreflect
AgentRecall consolidation & reflection — periodic triage of recurring corrections; proposes rule changes, never applies them without the owner.
arrecall
AgentRecall on-demand recall — surface past fixes, decisions, and patterns mid-session without leaving your flow.
arsave
AgentRecall full save — journal + palace + awareness + insights in one shot.
artel-recall
Search Artel shared memory for what the fleet already knows.
artel-remember
Write a fact, decision, or gotcha to Artel shared memory.
arstart
AgentRecall session opener — status board (no args), project loader ( ), or cold-start bootstrap. Use first every session.