Wonder Wagon
CatalogWW-047
Terminal family · the strongest evidence in the system

Same universe, different tools

All four tools draw their identity through one generator, wonder-wagon-ui/cli. Each product imports it at build time, commits the generated module, and fails CI if it drifts. At run time the products need no Wonder Wagon package at all.

Who owns what

Wonder Wagon owns

  • Layout grammarTwo leading cells, the mark, four cells, a letterspaced name.
  • Version and serial placementOn the name row: vX.Y.Z · XX-047.
  • Capability detectionTruecolor, 256 and 16 colours, read only from what the environment says.
  • NO_COLOR and WW_ASCIIIndependent switches: colour off, and ASCII glyphs.
  • Narrow behaviourA layout that reflows instead of wrapping.
  • Plain and machine behaviourNo identity when piped, for --version, or for JSON.

Each product owns

  • The markTrail bars, a star in a frame, a hallmark, a wagon.
  • The accentBlaze orange, periwinkle, bronze, Bench Green.
  • The taglineOne line saying what the tool is for.
  • The metaphorWhat the mark depicts and why.
Truecolor · 100 columns

Four identities, one grammar

Full captures, exactly as each package prints them in a 100-column truecolor terminal.


    ▗▄▄▄▄▄▄▖
    ▐▀▀▜▛▀▀▌    W O N D E R   W A G O N  v0.3.0 · WW-047
  ╲ ▐▄▄▄▄▄▄▌    One family. Different tools.
   ╲▟▀▀▀▀▀▀▙
     ▜▛  ▜▛

  ━━  Pathfinder  PF-047  npx create-pathfinder
      trail markers for AI-assisted work

  ✦   Lorekeeper  LK-047  npx create-lorekeeper
      You already wrote it down. Find the passage that answers.

  ▐█  Forge       FG-047  npm install forge-local-ai-kit
      the Local AI Kit

  ╱╲  Lama        draft
      Running locally. Built by Lamadrid.

  Made on Maker 047's bench.
npx wonder-wagon-ui@0.3.0 · PTY 100 cols · COLORTERM=truecolor TERM=xterm-256color · exit 0

     ━━━
    ━━━━━      P A T H F I N D E R  v4.5.0 · PF-047
   ━━━━━━━     trail markers for AI-assisted work
  ━━━━━━━━━

  🔍  ENVIRONMENT
  │  ✓ Git repository detected
  │  · No supported tools detected

  │  ✓ Kit files — 139 copied
  📋  DRY RUN
  │  Would install the Pathfinder kit into /tmp/ww-catalog/demo-project
  │  ✓ 139 files to write

     ━━━
    ━━━━━      🎉  READY WHEN YOU ARE
   ━━━━━━━     139 files
  ━━━━━━━━━

  Hand your agent this prompt to begin:

    Use skills/kickstart-pathfinder/SKILL.md. Help me initialize this
    project. Do not install packages or write product code yet.

  Trail's marked. The rest is yours.
npx create-pathfinder@4.5.0 --dry-run --yes · PTY 100 cols · COLORTERM=truecolor TERM=xterm-256color · exit 0

    ╭───╮
   ╭╯   ╰╮
   │  ✦  │    L O R E K E E P E R  v0.3.0 · LK-047
   ╰╮   ╭╯    You already wrote it down. Find the passage that answers.
    ╰───╯

Usage:
  lore init <dir>              Create a brain, or adopt an existing vault
  lore capture <brain> <item>  Write a thought or a URL into that brain
  lore search <brain> <query>  Rank the spans of that brain against a query
  lore --help                  Show this message
  lore --version               Print the version

A captured thought lands in inbox/ as YYYYMMDD-HHMMSS-subject.md, with the
same name as its id. Two captures in one second never collide: the second
one takes the next free -2, -3 suffix.

A captured URL lands in sources/ instead, named for the stable source id it
carries. URLs that name the same thing are one source, so capturing one you
already have reports the file that holds it and writes nothing. The URL is
identified, never visited.

Search ranks spans, not files: each result names a path, the heading it sits
under, its line range, and its score, and prints the lines themselves. Add
--json for that same result shape as JSON, or --limit to change how many
come back. A score ranks; it never proves an answer is absent.

Give several wordings of one question, each in its own quotes, and search
fuses their rankings into one list. Three wordings find what one misses,
so ask in other words rather than trusting a single phrasing. Spans that
repeat the same text in several files are reported once.

Search reads. It writes nothing, builds no index file, and works on any
directory of Markdown, whether or not lore init has run there.
Lorekeeper runs offline and takes no credentials.
npx create-lorekeeper@0.3.0 --help · PTY 100 cols · COLORTERM=truecolor TERM=xterm-256color · exit 0

    ▗▄▄▄▄▖
   ▐ █▀▀▀ ▌    F O R G E  v0.2.0 · FG-047
   ▐ █▀▀  ▌    the Local AI Kit
    ▝▀▀▀▀▘

Forge calls language models running on machines you control.

Usage:
  forge ask "<prompt>" [--json]   Delegate a prompt to the local runtime
  forge --help                    Show this help and exit
  forge --version                 Print the version and exit

Flags:
  --json      Emit the result or failure as a single JSON object
  --help      Show this help and exit
  --version   Print the version and exit

Configuration (environment variables):
  OLLAMA_HOST      Base URL of the Ollama API (required)
  FORGE_MODEL      Model to run (required)
  FORGE_TIMEOUT_MS Request timeout in milliseconds (optional)

a Wonder Wagon tool
npx forge-local-ai-kit@0.2.0 --help · PTY 100 cols · COLORTERM=truecolor TERM=xterm-256color · exit 0
Capability tiers

Down the fallback ladder

The same four packages, the same commands, in every environment the grammar supports.

Truecolor · 40 columnsEach identity reflows for a 40-column terminal. Pathfinder keeps its frozen one-line fallback; the newer products stack.

    ▗▄▄▄▄▄▄▖
    ▐▀▀▜▛▀▀▌
  ╲ ▐▄▄▄▄▄▄▌
   ╲▟▀▀▀▀▀▀▙
     ▜▛  ▜▛

  W O N D E R   W A G O N
  v0.3.0 · WW-047
  One family. Different tools.

  ━━  Pathfinder  PF-047
      npx create-pathfinder
      trail markers for AI-assisted work

  ✦   Lorekeeper  LK-047
      npx create-lorekeeper
      You already wrote it down. Find
      the passage that answers.

  ▐█  Forge       FG-047
      npm install forge-local-ai-kit
      the Local AI Kit

  ╱╲  Lama        draft
      Running locally. Built by
      Lamadrid.

  Made on Maker 047's bench.
npx wonder-wagon-ui@0.3.0 · PTY 40 cols · COLORTERM=truecolor TERM=xterm-256color · exit 0
P A T H F I N D E R  v4.5.0 · PF-047
  🔍  ENVIRONMENT
  │  ✓ Git repository detected
  │  · No supported tools detected

  │  ✓ Kit files — 139 copied
  📋  DRY RUN
  │  Would install the Pathfinder kit into /tmp/ww-catalog/demo-project
  │  ✓ 139 files to write

     ━━━
    ━━━━━      🎉  READY WHEN YOU ARE
   ━━━━━━━     139 files
  ━━━━━━━━━

  Hand your agent this prompt to begin:

    Use skills/kickstart-pathfinder/SKILL.md. Help me initialize this
    project. Do not install packages or write product code yet.

  Trail's marked. The rest is yours.
npx create-pathfinder@4.5.0 --dry-run --yes · PTY 40 cols · COLORTERM=truecolor TERM=xterm-256color · exit 0

    ╭───╮
   ╭╯   ╰╮
   │  ✦  │
   ╰╮   ╭╯
    ╰───╯

  L O R E K E E P E R
  v0.3.0 · LK-047
  You already wrote it down. Find the
  passage that answers.

Usage:
  lore init <dir>              Create a brain, or adopt an existing vault
  lore capture <brain> <item>  Write a thought or a URL into that brain
  lore search <brain> <query>  Rank the spans of that brain against a query
  lore --help                  Show this message
  lore --version               Print the version

A captured thought lands in inbox/ as YYYYMMDD-HHMMSS-subject.md, with the
same name as its id. Two captures in one second never collide: the second
one takes the next free -2, -3 suffix.

A captured URL lands in sources/ instead, named for the stable source id it

carries. URLs that name the same thing are one source, so capturing one you
already have reports the file that holds it and writes nothing. The URL is
identified, never visited.

Search ranks spans, not files: each result names a path, the heading it sits
under, its line range, and its score, and prints the lines themselves. Add
--json for that same result shape as JSON, or --limit to change how many
come back. A score ranks; it never proves an answer is absent.

Give several wordings of one question, each in its own quotes, and search
fuses their rankings into one list. Three wordings find what one misses,
so ask in other words rather than trusting a single phrasing. Spans that
repeat the same text in several files are reported once.

Search reads. It writes nothing, builds no index file, and works on any
directory of Markdown, whether or not lore init has run there.
Lorekeeper runs offline and takes no credentials.
npx create-lorekeeper@0.3.0 --help · PTY 40 cols · COLORTERM=truecolor TERM=xterm-256color · exit 0

    ▗▄▄▄▄▖
   ▐ █▀▀▀ ▌
   ▐ █▀▀  ▌
    ▝▀▀▀▀▘

  F O R G E
  v0.2.0 · FG-047
  the Local AI Kit

Forge calls language models running on machines you control.

Usage:
  forge ask "<prompt>" [--json]   Delegate a prompt to the local runtime
  forge --help                    Show this help and exit
  forge --version                 Print the version and exit

Flags:
  --json      Emit the result or failure as a single JSON object
  --help      Show this help and exit
  --version   Print the version and exit

Configuration (environment variables):
  OLLAMA_HOST      Base URL of the Ollama API (required)
  FORGE_MODEL      Model to run (required)
  FORGE_TIMEOUT_MS Request timeout in milliseconds (optional)

a Wonder Wagon tool
npx forge-local-ai-kit@0.2.0 --help · PTY 40 cols · COLORTERM=truecolor TERM=xterm-256color · exit 0
256 coloursNo truecolor advertised: each accent snaps to its nearest 256-colour index.

    ▗▄▄▄▄▄▄▖
    ▐▀▀▜▛▀▀▌    W O N D E R   W A G O N  v0.3.0 · WW-047
  ╲ ▐▄▄▄▄▄▄▌    One family. Different tools.
   ╲▟▀▀▀▀▀▀▙
     ▜▛  ▜▛

  ━━  Pathfinder  PF-047  npx create-pathfinder
      trail markers for AI-assisted work

  ✦   Lorekeeper  LK-047  npx create-lorekeeper
      You already wrote it down. Find the passage that answers.

  ▐█  Forge       FG-047  npm install forge-local-ai-kit
      the Local AI Kit

  ╱╲  Lama        draft
      Running locally. Built by Lamadrid.

  Made on Maker 047's bench.
npx wonder-wagon-ui@0.3.0 · PTY 100 cols · TERM=xterm-256color · exit 0

     ━━━
    ━━━━━      P A T H F I N D E R  v4.5.0 · PF-047
   ━━━━━━━     trail markers for AI-assisted work
  ━━━━━━━━━

  🔍  ENVIRONMENT
  │  ✓ Git repository detected
  │  · No supported tools detected

  │  ✓ Kit files — 139 copied
  📋  DRY RUN
  │  Would install the Pathfinder kit into /tmp/ww-catalog/demo-project
  │  ✓ 139 files to write

     ━━━
    ━━━━━      🎉  READY WHEN YOU ARE
   ━━━━━━━     139 files
  ━━━━━━━━━

  Hand your agent this prompt to begin:

    Use skills/kickstart-pathfinder/SKILL.md. Help me initialize this
    project. Do not install packages or write product code yet.

  Trail's marked. The rest is yours.
npx create-pathfinder@4.5.0 --dry-run --yes · PTY 100 cols · TERM=xterm-256color · exit 0

    ╭───╮
   ╭╯   ╰╮
   │  ✦  │    L O R E K E E P E R  v0.3.0 · LK-047
   ╰╮   ╭╯    You already wrote it down. Find the passage that answers.
    ╰───╯

Usage:
  lore init <dir>              Create a brain, or adopt an existing vault
  lore capture <brain> <item>  Write a thought or a URL into that brain
  lore search <brain> <query>  Rank the spans of that brain against a query
  lore --help                  Show this message
  lore --version               Print the version

A captured thought lands in inbox/ as YYYYMMDD-HHMMSS-subject.md, with the
same name as its id. Two captures in one second never collide: the second
one takes the next free -2, -3 suffix.

A captured URL lands in sources/ instead, named for the stable source id it
carries. URLs that name the same thing are one source, so capturing one you
already have reports the file that holds it and writes nothing. The URL is
identified, never visited.

Search ranks spans, not files: each result names a path, the heading it sits
under, its line range, and its score, and prints the lines themselves. Add
--json for that same result shape as JSON, or --limit to change how many
come back. A score ranks; it never proves an answer is absent.

Give several wordings of one question, each in its own quotes, and search
fuses their rankings into one list. Three wordings find what one misses,
so ask in other words rather than trusting a single phrasing. Spans that
repeat the same text in several files are reported once.

Search reads. It writes nothing, builds no index file, and works on any
directory of Markdown, whether or not lore init has run there.
Lorekeeper runs offline and takes no credentials.
npx create-lorekeeper@0.3.0 --help · PTY 100 cols · TERM=xterm-256color · exit 0

    ▗▄▄▄▄▖
   ▐ █▀▀▀ ▌    F O R G E  v0.2.0 · FG-047
   ▐ █▀▀  ▌    the Local AI Kit
    ▝▀▀▀▀▘

Forge calls language models running on machines you control.

Usage:
  forge ask "<prompt>" [--json]   Delegate a prompt to the local runtime
  forge --help                    Show this help and exit
  forge --version                 Print the version and exit

Flags:
  --json      Emit the result or failure as a single JSON object
  --help      Show this help and exit
  --version   Print the version and exit

Configuration (environment variables):
  OLLAMA_HOST      Base URL of the Ollama API (required)
  FORGE_MODEL      Model to run (required)
  FORGE_TIMEOUT_MS Request timeout in milliseconds (optional)

a Wonder Wagon tool
npx forge-local-ai-kit@0.2.0 --help · PTY 100 cols · TERM=xterm-256color · exit 0
NO_COLOR=1NO_COLOR removes every colour byte and keeps the Unicode geometry.

    ▗▄▄▄▄▄▄▖
    ▐▀▀▜▛▀▀▌    W O N D E R   W A G O N  v0.3.0 · WW-047
  ╲ ▐▄▄▄▄▄▄▌    One family. Different tools.
   ╲▟▀▀▀▀▀▀▙
     ▜▛  ▜▛

  ━━  Pathfinder  PF-047  npx create-pathfinder
      trail markers for AI-assisted work

  ✦   Lorekeeper  LK-047  npx create-lorekeeper
      You already wrote it down. Find the passage that answers.

  ▐█  Forge       FG-047  npm install forge-local-ai-kit
      the Local AI Kit

  ╱╲  Lama        draft
      Running locally. Built by Lamadrid.

  Made on Maker 047's bench.
npx wonder-wagon-ui@0.3.0 · PTY 100 cols · COLORTERM=truecolor TERM=xterm-256color NO_COLOR=1 · exit 0

     ━━━
    ━━━━━      P A T H F I N D E R  v4.5.0 · PF-047
   ━━━━━━━     trail markers for AI-assisted work
  ━━━━━━━━━

  🔍  ENVIRONMENT
  │  ✓ Git repository detected
  │  · No supported tools detected

  │  ✓ Kit files — 139 copied
  📋  DRY RUN
  │  Would install the Pathfinder kit into /tmp/ww-catalog/demo-project
  │  ✓ 139 files to write

     ━━━
    ━━━━━      🎉  READY WHEN YOU ARE
   ━━━━━━━     139 files
  ━━━━━━━━━

  Hand your agent this prompt to begin:

    Use skills/kickstart-pathfinder/SKILL.md. Help me initialize this
    project. Do not install packages or write product code yet.

  Trail's marked. The rest is yours.
npx create-pathfinder@4.5.0 --dry-run --yes · PTY 100 cols · COLORTERM=truecolor TERM=xterm-256color NO_COLOR=1 · exit 0

    ╭───╮
   ╭╯   ╰╮
   │  ✦  │    L O R E K E E P E R  v0.3.0 · LK-047
   ╰╮   ╭╯    You already wrote it down. Find the passage that answers.
    ╰───╯

Usage:
  lore init <dir>              Create a brain, or adopt an existing vault
  lore capture <brain> <item>  Write a thought or a URL into that brain
  lore search <brain> <query>  Rank the spans of that brain against a query
  lore --help                  Show this message
  lore --version               Print the version

A captured thought lands in inbox/ as YYYYMMDD-HHMMSS-subject.md, with the
same name as its id. Two captures in one second never collide: the second
one takes the next free -2, -3 suffix.

A captured URL lands in sources/ instead, named for the stable source id it
carries. URLs that name the same thing are one source, so capturing one you
already have reports the file that holds it and writes nothing. The URL is
identified, never visited.

Search ranks spans, not files: each result names a path, the heading it sits
under, its line range, and its score, and prints the lines themselves. Add
--json for that same result shape as JSON, or --limit to change how many
come back. A score ranks; it never proves an answer is absent.

Give several wordings of one question, each in its own quotes, and search
fuses their rankings into one list. Three wordings find what one misses,
so ask in other words rather than trusting a single phrasing. Spans that
repeat the same text in several files are reported once.

Search reads. It writes nothing, builds no index file, and works on any
directory of Markdown, whether or not lore init has run there.
Lorekeeper runs offline and takes no credentials.
npx create-lorekeeper@0.3.0 --help · PTY 100 cols · COLORTERM=truecolor TERM=xterm-256color NO_COLOR=1 · exit 0

    ▗▄▄▄▄▖
   ▐ █▀▀▀ ▌    F O R G E  v0.2.0 · FG-047
   ▐ █▀▀  ▌    the Local AI Kit
    ▝▀▀▀▀▘

Forge calls language models running on machines you control.

Usage:
  forge ask "<prompt>" [--json]   Delegate a prompt to the local runtime
  forge --help                    Show this help and exit
  forge --version                 Print the version and exit

Flags:
  --json      Emit the result or failure as a single JSON object
  --help      Show this help and exit
  --version   Print the version and exit

Configuration (environment variables):
  OLLAMA_HOST      Base URL of the Ollama API (required)
  FORGE_MODEL      Model to run (required)
  FORGE_TIMEOUT_MS Request timeout in milliseconds (optional)

a Wonder Wagon tool
npx forge-local-ai-kit@0.2.0 --help · PTY 100 cols · COLORTERM=truecolor TERM=xterm-256color NO_COLOR=1 · exit 0
WW_ASCII=1WW_ASCII=1 swaps the mark for its ASCII alphabet for terminals with unreliable glyph widths, and keeps the colour.

    .------.
    |==[]==|    W O N D E R   W A G O N  v0.3.0 - WW-047
  \ |______|    One family. Different tools.
   \/------\
     oo  oo

  ==  Pathfinder  PF-047  npx create-pathfinder
      trail markers for AI-assisted work

  *   Lorekeeper  LK-047  npx create-lorekeeper
      You already wrote it down. Find the passage that answers.

  [F  Forge       FG-047  npm install forge-local-ai-kit
      the Local AI Kit

  /\  Lama        draft
      Running locally. Built by Lamadrid.

  Made on Maker 047's bench.
npx wonder-wagon-ui@0.3.0 · PTY 100 cols · COLORTERM=truecolor TERM=xterm-256color WW_ASCII=1 · exit 0

     ===
    =====      P A T H F I N D E R  v4.5.0 - PF-047
   =======     trail markers for AI-assisted work
  =========

  (o)  ENVIRONMENT
  |  + Git repository detected
  |  - No supported tools detected

  |  + Kit files - 139 copied
  (:)  DRY RUN
  |  Would install the Pathfinder kit into /tmp/ww-catalog/demo-project
  |  + 139 files to write

     ===
    =====      \o/  READY WHEN YOU ARE
   =======     139 files
  =========

  Hand your agent this prompt to begin:

    Use skills/kickstart-pathfinder/SKILL.md. Help me initialize this
    project. Do not install packages or write product code yet.

  Trail's marked. The rest is yours.
npx create-pathfinder@4.5.0 --dry-run --yes · PTY 100 cols · COLORTERM=truecolor TERM=xterm-256color WW_ASCII=1 · exit 0

    .---.
   /     \
   |  *  |    L O R E K E E P E R  v0.3.0 - LK-047
   \     /    You already wrote it down. Find the passage that answers.
    '---'

Usage:
  lore init <dir>              Create a brain, or adopt an existing vault
  lore capture <brain> <item>  Write a thought or a URL into that brain
  lore search <brain> <query>  Rank the spans of that brain against a query
  lore --help                  Show this message
  lore --version               Print the version

A captured thought lands in inbox/ as YYYYMMDD-HHMMSS-subject.md, with the
same name as its id. Two captures in one second never collide: the second
one takes the next free -2, -3 suffix.

A captured URL lands in sources/ instead, named for the stable source id it
carries. URLs that name the same thing are one source, so capturing one you
already have reports the file that holds it and writes nothing. The URL is
identified, never visited.

Search ranks spans, not files: each result names a path, the heading it sits
under, its line range, and its score, and prints the lines themselves. Add
--json for that same result shape as JSON, or --limit to change how many
come back. A score ranks; it never proves an answer is absent.

Give several wordings of one question, each in its own quotes, and search
fuses their rankings into one list. Three wordings find what one misses,
so ask in other words rather than trusting a single phrasing. Spans that
repeat the same text in several files are reported once.

Search reads. It writes nothing, builds no index file, and works on any
directory of Markdown, whether or not lore init has run there.
Lorekeeper runs offline and takes no credentials.
npx create-lorekeeper@0.3.0 --help · PTY 100 cols · COLORTERM=truecolor TERM=xterm-256color WW_ASCII=1 · exit 0

    .----.
   / F=== \    F O R G E  v0.2.0 - FG-047
   \ F==  /    the Local AI Kit
    '----'

Forge calls language models running on machines you control.

Usage:
  forge ask "<prompt>" [--json]   Delegate a prompt to the local runtime
  forge --help                    Show this help and exit
  forge --version                 Print the version and exit

Flags:
  --json      Emit the result or failure as a single JSON object
  --help      Show this help and exit
  --version   Print the version and exit

Configuration (environment variables):
  OLLAMA_HOST      Base URL of the Ollama API (required)
  FORGE_MODEL      Model to run (required)
  FORGE_TIMEOUT_MS Request timeout in milliseconds (optional)

a Wonder Wagon tool
npx forge-local-ai-kit@0.2.0 --help · PTY 100 cols · COLORTERM=truecolor TERM=xterm-256color WW_ASCII=1 · exit 0
TERM=dumbTERM=dumb: no colour, ASCII geometry.

    ▗▄▄▄▄▄▄▖
    ▐▀▀▜▛▀▀▌    W O N D E R   W A G O N  v0.3.0 · WW-047
  ╲ ▐▄▄▄▄▄▄▌    One family. Different tools.
   ╲▟▀▀▀▀▀▀▙
     ▜▛  ▜▛

  ━━  Pathfinder  PF-047  npx create-pathfinder
      trail markers for AI-assisted work

  ✦   Lorekeeper  LK-047  npx create-lorekeeper
      You already wrote it down. Find the passage that answers.

  ▐█  Forge       FG-047  npm install forge-local-ai-kit
      the Local AI Kit

  ╱╲  Lama        draft
      Running locally. Built by Lamadrid.

  Made on Maker 047's bench.
npx wonder-wagon-ui@0.3.0 · PTY 100 cols · TERM=dumb · exit 0

     ━━━
    ━━━━━      P A T H F I N D E R  v4.5.0 · PF-047
   ━━━━━━━     trail markers for AI-assisted work
  ━━━━━━━━━

  🔍  ENVIRONMENT
  │  ✓ Git repository detected
  │  · No supported tools detected

  │  ✓ Kit files — 139 copied
  📋  DRY RUN
  │  Would install the Pathfinder kit into /tmp/ww-catalog/demo-project
  │  ✓ 139 files to write

     ━━━
    ━━━━━      🎉  READY WHEN YOU ARE
   ━━━━━━━     139 files
  ━━━━━━━━━

  Hand your agent this prompt to begin:

    Use skills/kickstart-pathfinder/SKILL.md. Help me initialize this
    project. Do not install packages or write product code yet.

  Trail's marked. The rest is yours.
npx create-pathfinder@4.5.0 --dry-run --yes · PTY 100 cols · TERM=dumb · exit 0

    ╭───╮
   ╭╯   ╰╮
   │  ✦  │    L O R E K E E P E R  v0.3.0 · LK-047
   ╰╮   ╭╯    You already wrote it down. Find the passage that answers.
    ╰───╯

Usage:
  lore init <dir>              Create a brain, or adopt an existing vault
  lore capture <brain> <item>  Write a thought or a URL into that brain
  lore search <brain> <query>  Rank the spans of that brain against a query
  lore --help                  Show this message
  lore --version               Print the version

A captured thought lands in inbox/ as YYYYMMDD-HHMMSS-subject.md, with the
same name as its id. Two captures in one second never collide: the second
one takes the next free -2, -3 suffix.

A captured URL lands in sources/ instead, named for the stable source id it
carries. URLs that name the same thing are one source, so capturing one you
already have reports the file that holds it and writes nothing. The URL is
identified, never visited.

Search ranks spans, not files: each result names a path, the heading it sits
under, its line range, and its score, and prints the lines themselves. Add
--json for that same result shape as JSON, or --limit to change how many
come back. A score ranks; it never proves an answer is absent.

Give several wordings of one question, each in its own quotes, and search
fuses their rankings into one list. Three wordings find what one misses,
so ask in other words rather than trusting a single phrasing. Spans that
repeat the same text in several files are reported once.

Search reads. It writes nothing, builds no index file, and works on any
directory of Markdown, whether or not lore init has run there.
Lorekeeper runs offline and takes no credentials.
npx create-lorekeeper@0.3.0 --help · PTY 100 cols · TERM=dumb · exit 0

    ▗▄▄▄▄▖
   ▐ █▀▀▀ ▌    F O R G E  v0.2.0 · FG-047
   ▐ █▀▀  ▌    the Local AI Kit
    ▝▀▀▀▀▘

Forge calls language models running on machines you control.

Usage:
  forge ask "<prompt>" [--json]   Delegate a prompt to the local runtime
  forge --help                    Show this help and exit
  forge --version                 Print the version and exit

Flags:
  --json      Emit the result or failure as a single JSON object
  --help      Show this help and exit
  --version   Print the version and exit

Configuration (environment variables):
  OLLAMA_HOST      Base URL of the Ollama API (required)
  FORGE_MODEL      Model to run (required)
  FORGE_TIMEOUT_MS Request timeout in milliseconds (optional)

a Wonder Wagon tool
npx forge-local-ai-kit@0.2.0 --help · PTY 100 cols · TERM=dumb · exit 0
Piped · no terminalNot a terminal, so no identity block. What a script or another program sees is only the output it asked for.
Wonder Wagon 0.3.0 WW-047
One family. Different tools.

Pathfinder  PF-047  npx create-pathfinder
Lorekeeper  LK-047  npx create-lorekeeper
Forge       FG-047  npm install forge-local-ai-kit
Lama        draft
npx wonder-wagon-ui@0.3.0 · piped · COLORTERM=truecolor TERM=xterm-256color · exit 0
Would install the Pathfinder kit into /tmp/ww-catalog/demo-project

  139 files to write

Next step — give your agent this prompt:

  Use skills/kickstart-pathfinder/SKILL.md. Help me initialize this
  project. Do not install packages or write product code yet.
npx create-pathfinder@4.5.0 --dry-run --yes · piped · COLORTERM=truecolor TERM=xterm-256color · exit 0
Lorekeeper 0.3.0
Pathfinder finds the way; Lorekeeper remembers the journey.

Usage:
  lore init <dir>              Create a brain, or adopt an existing vault
  lore capture <brain> <item>  Write a thought or a URL into that brain
  lore search <brain> <query>  Rank the spans of that brain against a query
  lore --help                  Show this message
  lore --version               Print the version

A captured thought lands in inbox/ as YYYYMMDD-HHMMSS-subject.md, with the
same name as its id. Two captures in one second never collide: the second
one takes the next free -2, -3 suffix.

A captured URL lands in sources/ instead, named for the stable source id it
carries. URLs that name the same thing are one source, so capturing one you
already have reports the file that holds it and writes nothing. The URL is
identified, never visited.

Search ranks spans, not files: each result names a path, the heading it sits
under, its line range, and its score, and prints the lines themselves. Add
--json for that same result shape as JSON, or --limit to change how many
come back. A score ranks; it never proves an answer is absent.

Give several wordings of one question, each in its own quotes, and search
fuses their rankings into one list. Three wordings find what one misses,
so ask in other words rather than trusting a single phrasing. Spans that
repeat the same text in several files are reported once.

Search reads. It writes nothing, builds no index file, and works on any
directory of Markdown, whether or not lore init has run there.
Lorekeeper runs offline and takes no credentials.
npx create-lorekeeper@0.3.0 --help · piped · COLORTERM=truecolor TERM=xterm-256color · exit 0
Forge — the Local AI Kit

Usage:
  forge ask "<prompt>" [--json]   Delegate a prompt to the local runtime
  forge --help                    Show this help and exit
  forge --version                 Print the version and exit

Flags:
  --json      Emit the result or failure as a single JSON object
  --help      Show this help and exit
  --version   Print the version and exit

Configuration (environment variables):
  OLLAMA_HOST      Base URL of the Ollama API (required)
  FORGE_MODEL      Model to run (required)
  FORGE_TIMEOUT_MS Request timeout in milliseconds (optional)

FG-047 · a Wonder Wagon tool
npx forge-local-ai-kit@0.2.0 --help · piped · COLORTERM=truecolor TERM=xterm-256color · exit 0
Known limits

What the grammar can't know

  • Terminals don't reliably report a light background. Lorekeeper's and Forge's accents can have low contrast on one; NO_COLOR=1 removes the colour.
  • Box-drawing and block glyphs can render double-width under CJK ambiguous-width settings. WW_ASCII=1 selects the ASCII mark.
  • 16-colour output takes its actual colours from the user's terminal theme; these pages draw it with xterm's defaults.

How these were captured: the capture manifest.