manifest: {
contributes: readonly ["chat.tool", "chat.guidance"];
id: "memory";
panel: {
developer: false;
entry: "@mlx-bun/module-memory/panel";
overlay: true;
path: "/memory";
tag: "mlx-memory-panel";
title: "Memory";
};
placement: "app";
requires: readonly ["storage", "registry"];
routes: readonly [
{
id: "status";
method: "GET";
mount: "root";
path: "/api/memory/status";
response: "json";
summary: "Wiki status and nightly schedule";
},
{
id: "list";
method: "GET";
mount: "root";
path: "/api/memory/list";
response: "json";
summary: "List articles and reference documents";
},
{
id: "search";
method: "GET";
mount: "root";
path: "/api/memory/search";
response: "json";
summary: "Search article and reference content";
},
{
id: "article";
method: "GET";
mount: "root";
path: "/api/memory/article";
response: "json";
summary: "Read a document with its article structure";
},
{
id: "links";
method: "GET";
mount: "root";
path: "/api/memory/links";
response: "json";
summary: "Read inbound and outbound article links";
},
{
id: "history";
method: "GET";
mount: "root";
path: "/api/memory/history";
response: "json";
summary: "Read an article’s Git history";
},
{
id: "diff";
method: "GET";
mount: "root";
path: "/api/memory/diff";
response: "json";
summary: "Read an article revision diff";
},
{
id: "init";
method: "POST";
mount: "root";
path: "/api/memory/init";
response: "json";
summary: "Initialize the memory wiki";
},
{
id: "synthesize";
method: "GET";
mount: "root";
path: "/v1/memory/synthesize";
response: "sse";
summary: "Run synthesis and stream progress";
},
];
storage: readonly [
{
key: "vault";
kind: "directory";
path: "wiki";
purpose: "Markdown articles and read-only reference links";
},
{
key: "skills";
kind: "directory";
path: "skills";
purpose: "Bundled memory skill for chat";
},
{
key: "db";
kind: "sqlite";
path: "db/memory.sqlite";
purpose: "Ingest and synthesis state";
},
];
summary: "A local Markdown vault, read-only chat tools and the existing synthesis and nightly scheduling pipeline.";
title: "Memory";
verbs: readonly [
{
details: "A local, durable memory for the assistant: a wiki of Markdown articles\n(~/.mlx-bun/wiki) it reads to remember your projects, people, and history\nacross sessions. It is yours: git-tracked, editable in any tool (Obsidian\nopens it as a vault), and it never leaves the machine. Once set up, it loads\nautomatically into every `mlx-bun serve` session.\n\nSubcommands:\n init, setup Create the wiki + walk through setup (idempotent);\n offers to import an existing vault and install the\n nightly synthesis job\n status Path, article count, git + schedule state (the default)\n open, browse [article]\n Open the wiki, or a specific article, in Obsidian\n (falls back to Finder / the default Markdown app)\n list List article titles + read-only Reference docs\n search <query> Search articles from the terminal\n toc <article> Print an article's headings + anchors\n section <article> <anchor>\n Print one article section\n links <article> Show resolved outbound + inbound wikilinks\n read <article> Print an article (stem, e.g. Archie_Project)\n synthesize Run the FULL synthesis DAG now (--since, --model,\n --dry-run); also: pipeline, all\n segment | extract | route | synthesize-stage\n Run ONE decomposed stage worker (--limit N —\n segment/extract/synthesize-stage only; --convs a,b).\n Each pulls its eligible work from the DB by state, walks\n oldest-conversation-first, persists, and exits — resumable,\n and runnable as separate concurrent processes on slices.\n link Deterministic cross-linking stage: inline-link first\n mentions + rebuild ## See also (--limit N; no model)\n schedule Install the nightly launchd job (--at HH:MM [03:00])\n unschedule Remove the nightly launchd job\n\nThe read path is live: the assistant reads a wiki you set up by hand or\nimport during `memory init`. Run `mlx-bun memory open` to browse it in\nObsidian/Finder, or `mlx-bun memory open <article>` to jump to a specific\npage. Synthesis (conversations -> articles) runs the full local pipeline via\n`mlx-bun memory synthesize` (or per-stage: segment/extract/route/\nsynthesize-stage/link); the nightly job runs it on a schedule. These load the\nmemory task model on first use; --host/--port use a serving mlx-bun instead.";
helpUsage: "Usage: mlx-bun memory [subcommand] [args] [options]";
name: "memory";
options: readonly [
{
name: "since";
summary: "synthesize: only conversations newer than this (parsed; the pipeline does not consume it yet)";
type: "string";
},
{
name: "model";
summary: "synthesize: synthesis model override (parsed; reserved)";
type: "string";
},
{
name: "dry-run";
summary: "synthesize: plan the stages only, never write the vault";
type: "boolean";
},
{
name: "limit";
summary: "Stage workers: cap the work processed this pass (segment, extract, synthesize-stage, link)";
type: "string";
},
{
name: "convs";
summary: "Stage workers: comma-separated conversation ids to restrict the pass to";
type: "string";
},
{
name: "at";
summary: "schedule: local wall-clock time for the nightly job, 24h HH:MM [default: 03:00]";
type: "string";
},
{
name: "host";
summary: "Run the model calls on a serving mlx-bun at this host instead of loading the memory task model (127.0.0.1 when only --port is given)";
type: "string";
},
{
name: "port";
summary: "Port of that server (8080 when only --host is given)";
type: "string";
},
];
positional: readonly [
{ name: "subcommand"; summary: "Memory action" },
{ name: "args"; repeatable: true; summary: "Action arguments" },
];
summary: "Your local AI's personal wiki: set it up, inspect it, run synthesis, schedule it";
usage: "usage: mlx-bun memory <subcommand> [args] [options]";
},
{
details: "A local, durable memory for the assistant: a wiki of Markdown articles\n(~/.mlx-bun/wiki) it reads to remember your projects, people, and history\nacross sessions. It is yours: git-tracked, editable in any tool (Obsidian\nopens it as a vault), and it never leaves the machine. Once set up, it loads\nautomatically into every `mlx-bun serve` session.\n\nSubcommands:\n init, setup Create the wiki + walk through setup (idempotent);\n offers to import an existing vault and install the\n nightly synthesis job\n status Path, article count, git + schedule state (the default)\n open, browse [article]\n Open the wiki, or a specific article, in Obsidian\n (falls back to Finder / the default Markdown app)\n list List article titles + read-only Reference docs\n search <query> Search articles from the terminal\n toc <article> Print an article's headings + anchors\n section <article> <anchor>\n Print one article section\n links <article> Show resolved outbound + inbound wikilinks\n read <article> Print an article (stem, e.g. Archie_Project)\n synthesize Run the FULL synthesis DAG now (--since, --model,\n --dry-run); also: pipeline, all\n segment | extract | route | synthesize-stage\n Run ONE decomposed stage worker (--limit N —\n segment/extract/synthesize-stage only; --convs a,b).\n Each pulls its eligible work from the DB by state, walks\n oldest-conversation-first, persists, and exits — resumable,\n and runnable as separate concurrent processes on slices.\n link Deterministic cross-linking stage: inline-link first\n mentions + rebuild ## See also (--limit N; no model)\n schedule Install the nightly launchd job (--at HH:MM [03:00])\n unschedule Remove the nightly launchd job\n\nThe read path is live: the assistant reads a wiki you set up by hand or\nimport during `memory init`. Run `mlx-bun memory open` to browse it in\nObsidian/Finder, or `mlx-bun memory open <article>` to jump to a specific\npage. Synthesis (conversations -> articles) runs the full local pipeline via\n`mlx-bun memory synthesize` (or per-stage: segment/extract/route/\nsynthesize-stage/link); the nightly job runs it on a schedule. These load the\nmemory task model on first use; --host/--port use a serving mlx-bun instead.";
helpUsage: "Usage: mlx-bun setup [subcommand] [args] [options]";
name: "setup";
options: readonly [
{
name: "since";
summary: "synthesize: only conversations newer than this (parsed; the pipeline does not consume it yet)";
type: "string";
},
{
name: "model";
summary: "synthesize: synthesis model override (parsed; reserved)";
type: "string";
},
{
name: "dry-run";
summary: "synthesize: plan the stages only, never write the vault";
type: "boolean";
},
{
name: "limit";
summary: "Stage workers: cap the work processed this pass (segment, extract, synthesize-stage, link)";
type: "string";
},
{
name: "convs";
summary: "Stage workers: comma-separated conversation ids to restrict the pass to";
type: "string";
},
{
name: "at";
summary: "schedule: local wall-clock time for the nightly job, 24h HH:MM [default: 03:00]";
type: "string";
},
{
name: "host";
summary: "Run the model calls on a serving mlx-bun at this host instead of loading the memory task model (127.0.0.1 when only --port is given)";
type: "string";
},
{
name: "port";
summary: "Port of that server (8080 when only --host is given)";
type: "string";
},
];
positional: readonly [
{ name: "subcommand"; summary: "Memory action" },
{ name: "args"; repeatable: true; summary: "Action arguments" },
];
summary: "Set up your local AI's memory wiki (alias of mlx-bun memory)";
usage: "usage: mlx-bun setup <subcommand> [args] [options]";
},
];
} = ...
Type Declaration
-
Readonlycontributes: readonly ["chat.tool", "chat.guidance"]
-
Readonlyid: "memory"
-
Readonlypanel: {
developer: false;
entry: "@mlx-bun/module-memory/panel";
overlay: true;
path: "/memory";
tag: "mlx-memory-panel";
title: "Memory";
}
-
Readonlyplacement: "app"
-
Readonlyrequires: readonly ["storage", "registry"]
-
Readonlyroutes: readonly [
{
id: "status";
method: "GET";
mount: "root";
path: "/api/memory/status";
response: "json";
summary: "Wiki status and nightly schedule";
},
{
id: "list";
method: "GET";
mount: "root";
path: "/api/memory/list";
response: "json";
summary: "List articles and reference documents";
},
{
id: "search";
method: "GET";
mount: "root";
path: "/api/memory/search";
response: "json";
summary: "Search article and reference content";
},
{
id: "article";
method: "GET";
mount: "root";
path: "/api/memory/article";
response: "json";
summary: "Read a document with its article structure";
},
{
id: "links";
method: "GET";
mount: "root";
path: "/api/memory/links";
response: "json";
summary: "Read inbound and outbound article links";
},
{
id: "history";
method: "GET";
mount: "root";
path: "/api/memory/history";
response: "json";
summary: "Read an article’s Git history";
},
{
id: "diff";
method: "GET";
mount: "root";
path: "/api/memory/diff";
response: "json";
summary: "Read an article revision diff";
},
{
id: "init";
method: "POST";
mount: "root";
path: "/api/memory/init";
response: "json";
summary: "Initialize the memory wiki";
},
{
id: "synthesize";
method: "GET";
mount: "root";
path: "/v1/memory/synthesize";
response: "sse";
summary: "Run synthesis and stream progress";
},
]
-
Readonlystorage: readonly [
{
key: "vault";
kind: "directory";
path: "wiki";
purpose: "Markdown articles and read-only reference links";
},
{
key: "skills";
kind: "directory";
path: "skills";
purpose: "Bundled memory skill for chat";
},
{
key: "db";
kind: "sqlite";
path: "db/memory.sqlite";
purpose: "Ingest and synthesis state";
},
]
-
Readonlysummary: "A local Markdown vault, read-only chat tools and the existing synthesis and nightly scheduling pipeline."
-
Readonlytitle: "Memory"
-
Readonlyverbs: readonly [
{
details: "A local, durable memory for the assistant: a wiki of Markdown articles\n(~/.mlx-bun/wiki) it reads to remember your projects, people, and history\nacross sessions. It is yours: git-tracked, editable in any tool (Obsidian\nopens it as a vault), and it never leaves the machine. Once set up, it loads\nautomatically into every `mlx-bun serve` session.\n\nSubcommands:\n init, setup Create the wiki + walk through setup (idempotent);\n offers to import an existing vault and install the\n nightly synthesis job\n status Path, article count, git + schedule state (the default)\n open, browse [article]\n Open the wiki, or a specific article, in Obsidian\n (falls back to Finder / the default Markdown app)\n list List article titles + read-only Reference docs\n search <query> Search articles from the terminal\n toc <article> Print an article's headings + anchors\n section <article> <anchor>\n Print one article section\n links <article> Show resolved outbound + inbound wikilinks\n read <article> Print an article (stem, e.g. Archie_Project)\n synthesize Run the FULL synthesis DAG now (--since, --model,\n --dry-run); also: pipeline, all\n segment | extract | route | synthesize-stage\n Run ONE decomposed stage worker (--limit N —\n segment/extract/synthesize-stage only; --convs a,b).\n Each pulls its eligible work from the DB by state, walks\n oldest-conversation-first, persists, and exits — resumable,\n and runnable as separate concurrent processes on slices.\n link Deterministic cross-linking stage: inline-link first\n mentions + rebuild ## See also (--limit N; no model)\n schedule Install the nightly launchd job (--at HH:MM [03:00])\n unschedule Remove the nightly launchd job\n\nThe read path is live: the assistant reads a wiki you set up by hand or\nimport during `memory init`. Run `mlx-bun memory open` to browse it in\nObsidian/Finder, or `mlx-bun memory open <article>` to jump to a specific\npage. Synthesis (conversations -> articles) runs the full local pipeline via\n`mlx-bun memory synthesize` (or per-stage: segment/extract/route/\nsynthesize-stage/link); the nightly job runs it on a schedule. These load the\nmemory task model on first use; --host/--port use a serving mlx-bun instead.";
helpUsage: "Usage: mlx-bun memory [subcommand] [args] [options]";
name: "memory";
options: readonly [
{
name: "since";
summary: "synthesize: only conversations newer than this (parsed; the pipeline does not consume it yet)";
type: "string";
},
{
name: "model";
summary: "synthesize: synthesis model override (parsed; reserved)";
type: "string";
},
{
name: "dry-run";
summary: "synthesize: plan the stages only, never write the vault";
type: "boolean";
},
{
name: "limit";
summary: "Stage workers: cap the work processed this pass (segment, extract, synthesize-stage, link)";
type: "string";
},
{
name: "convs";
summary: "Stage workers: comma-separated conversation ids to restrict the pass to";
type: "string";
},
{
name: "at";
summary: "schedule: local wall-clock time for the nightly job, 24h HH:MM [default: 03:00]";
type: "string";
},
{
name: "host";
summary: "Run the model calls on a serving mlx-bun at this host instead of loading the memory task model (127.0.0.1 when only --port is given)";
type: "string";
},
{
name: "port";
summary: "Port of that server (8080 when only --host is given)";
type: "string";
},
];
positional: readonly [
{ name: "subcommand"; summary: "Memory action" },
{ name: "args"; repeatable: true; summary: "Action arguments" },
];
summary: "Your local AI's personal wiki: set it up, inspect it, run synthesis, schedule it";
usage: "usage: mlx-bun memory <subcommand> [args] [options]";
},
{
details: "A local, durable memory for the assistant: a wiki of Markdown articles\n(~/.mlx-bun/wiki) it reads to remember your projects, people, and history\nacross sessions. It is yours: git-tracked, editable in any tool (Obsidian\nopens it as a vault), and it never leaves the machine. Once set up, it loads\nautomatically into every `mlx-bun serve` session.\n\nSubcommands:\n init, setup Create the wiki + walk through setup (idempotent);\n offers to import an existing vault and install the\n nightly synthesis job\n status Path, article count, git + schedule state (the default)\n open, browse [article]\n Open the wiki, or a specific article, in Obsidian\n (falls back to Finder / the default Markdown app)\n list List article titles + read-only Reference docs\n search <query> Search articles from the terminal\n toc <article> Print an article's headings + anchors\n section <article> <anchor>\n Print one article section\n links <article> Show resolved outbound + inbound wikilinks\n read <article> Print an article (stem, e.g. Archie_Project)\n synthesize Run the FULL synthesis DAG now (--since, --model,\n --dry-run); also: pipeline, all\n segment | extract | route | synthesize-stage\n Run ONE decomposed stage worker (--limit N —\n segment/extract/synthesize-stage only; --convs a,b).\n Each pulls its eligible work from the DB by state, walks\n oldest-conversation-first, persists, and exits — resumable,\n and runnable as separate concurrent processes on slices.\n link Deterministic cross-linking stage: inline-link first\n mentions + rebuild ## See also (--limit N; no model)\n schedule Install the nightly launchd job (--at HH:MM [03:00])\n unschedule Remove the nightly launchd job\n\nThe read path is live: the assistant reads a wiki you set up by hand or\nimport during `memory init`. Run `mlx-bun memory open` to browse it in\nObsidian/Finder, or `mlx-bun memory open <article>` to jump to a specific\npage. Synthesis (conversations -> articles) runs the full local pipeline via\n`mlx-bun memory synthesize` (or per-stage: segment/extract/route/\nsynthesize-stage/link); the nightly job runs it on a schedule. These load the\nmemory task model on first use; --host/--port use a serving mlx-bun instead.";
helpUsage: "Usage: mlx-bun setup [subcommand] [args] [options]";
name: "setup";
options: readonly [
{
name: "since";
summary: "synthesize: only conversations newer than this (parsed; the pipeline does not consume it yet)";
type: "string";
},
{
name: "model";
summary: "synthesize: synthesis model override (parsed; reserved)";
type: "string";
},
{
name: "dry-run";
summary: "synthesize: plan the stages only, never write the vault";
type: "boolean";
},
{
name: "limit";
summary: "Stage workers: cap the work processed this pass (segment, extract, synthesize-stage, link)";
type: "string";
},
{
name: "convs";
summary: "Stage workers: comma-separated conversation ids to restrict the pass to";
type: "string";
},
{
name: "at";
summary: "schedule: local wall-clock time for the nightly job, 24h HH:MM [default: 03:00]";
type: "string";
},
{
name: "host";
summary: "Run the model calls on a serving mlx-bun at this host instead of loading the memory task model (127.0.0.1 when only --port is given)";
type: "string";
},
{
name: "port";
summary: "Port of that server (8080 when only --host is given)";
type: "string";
},
];
positional: readonly [
{ name: "subcommand"; summary: "Memory action" },
{ name: "args"; repeatable: true; summary: "Action arguments" },
];
summary: "Set up your local AI's memory wiki (alias of mlx-bun memory)";
usage: "usage: mlx-bun setup <subcommand> [args] [options]";
},
]