>_git log --oneline

Changelog

What shipped, newest first. The cabinet keeps the long memory — this is the short one.

  1. Companion

    Grounded Companion 0.2.0

    Companion installs Grounded Core for you. With no Core on the PC, one click sets it up as a background service that runs as you and starts when you sign in, with no admin rights needed. If the PC has no Node.js, Companion downloads the official nodejs.org build and checks its SHA-256 first. Uninstall Grounded Core removes the service and program files and keeps your cabinet; deleting the cabinet is a separate step you confirm by typing DELETE. Companion also updates itself: it checks getgrounded.dev, downloads the new version beside the running one, verifies its size and SHA-256, and swaps it in. A badge in the footer says when a new Grounded Core is published, and the Settings page has a Grounded Core card showing the installed version, whether the service is ready, and an update button. Databox appears on the Add-ons page next to Embeddings. The Cloud connection option is hidden: Companion connects to cabinets on your own computers.

  2. Release

    Grounded Core v0.2.0

    Core v0.2.0 is on the release channel for windows-x64 and linux-x64. It carries the new folder layout below (configuration in ~/.grounded, your data in ~/Grounded/Cabinet) and grounded migrate-cabinet. Companion installs it on Windows; on Linux the install script fetches it.

    Existing users
    On Windows, Companion offers the update. On Linux, re-run the install script, then grounded restart.

  3. Engine

    Your data lives in ~/Grounded/Cabinet on every system

    The default ~/.grounded folder now holds only configuration, models and runtime: config.toml, install.json, logs, lib and add-ons. Your data (grounded.db, docs, Databox cards, exports, backups) lives in a visible Grounded folder beside your other user folders: ~/Grounded/Cabinet on Linux and macOS, %USERPROFILE%\Grounded\Cabinet on Windows. Docker installs mount the two folders separately. A custom --home or GROUNDED_HOME folder stays self-contained, with its data in cabinet/ inside it. grounded uninstall --purge removes both folders.

    Existing users
    Nothing moves on its own. An install whose data is in ~/.grounded/cabinet keeps using it, and grounded status says so. Run grounded migrate-cabinet to move it: it stops the service, moves the data to ~/Grounded/Cabinet, verifies every file, and starts the service again. It refuses if the new folder already holds files.

  4. Release

    Grounded Core v0.1.0: the first packaged release

    Core now ships as a release on GitHub: a windows-x64 zip and a linux-x64 tarball, about 2 MB each, listed in a manifest with their SHA-256 and the Node version each was built for. GET /health reports the installed version, so Companion can tell when an update is out. Add-ons arrive: GET /addons lists them, POST /addons/:id/install and /disable turn them on and off, and their heavier runtimes download only when you ask. Databox ships as an add-on: folders of JSON items you query with read-only SQL, with incremental re-indexing and child tables for nested arrays. LAN sharing is new and opt-in: a second listener on port 7438, a six-digit pairing code that lasts three minutes, and a lasting credential for each paired computer, stored only as a hash. The console is rebuilt around tasks (Home, Review, Brief, Search, Agents, Machines, Databox) and follows your light or dark setting. On Windows, new installs keep the engine in %USERPROFILE%\.grounded and your memory in %USERPROFILE%\Grounded\Cabinet.

    Existing users
    On Windows, Companion offers the update, and an existing Grounded\.core install keeps being used. On Linux, re-run the install script, then grounded restart. Sharing stays off until you turn it on.

  5. Add-on

    Search by meaning, without Ollama

    The Embeddings add-on runs nomic-embed-text in-process with onnxruntime: no Ollama, and nothing you store leaves your machine. On Windows it uses the graphics card through DirectML; elsewhere it runs on the CPU, and the console says so. Turn it on from the console or with grounded addon add embeddings: it downloads the model once, switches search by meaning on, and embeds what is already in your cabinet in the background. Without it, recall is keyword-only and still works.

  6. Installer

    Grounded runs natively on Windows

    grounded install now offers a Windows scheduled task, and picks it by default on Windows: no Docker, no admin rights. It starts when you sign in, runs in the background with no window, keeps running after you sign out and on battery, and restarts the service if it crashes. Logs land in the cabinet at logs\grounded.log. The default cabinet on Windows is a Grounded folder in your user folder (%USERPROFILE%\Grounded), beside Documents and Downloads, with the Grounded icon. It is deliberately not inside Documents, which OneDrive often syncs.

    Existing users
    Existing Windows cabinets at ~\.grounded\cabinet keep working: Grounded keeps using them. To move the data to %USERPROFILE%\Grounded\Cabinet, run grounded migrate-cabinet (added 2026-10-16); do not move the .grounded folder by hand.

  7. Engine

    Works out of the box without Ollama

    A fresh install used to assume Ollama was running on localhost, so on a machine without it every write failed with EMBED_ERROR. The installer now checks: if Ollama answers, you get hybrid recall; if not, the cabinet starts lexical-only and says why. Separately, the SQLite adapter now embeds before it writes. A write that fails no longer leaves a row behind, so retrying can no longer create duplicates.

    Existing users
    Your config.toml is never rewritten. If writes fail with EMBED_ERROR today, either start Ollama or set [embeddings] provider = "none" in config.toml, then grounded restart.

  8. Installer

    Grounded leaves npm

    Grounded is no longer installed with npx or npm. The @grounded packages were never published, and the unscoped grounded name on npm belongs to someone else, so install instructions that pointed there could not work. The CLI now finds the Grounded service it ships with instead of fetching it from a registry, and installs come from release downloads: a shell script on macOS and Linux that checks each download against published SHA-256 sums.

    Existing users
    If you followed an npx @grounded/cli instruction, use the install page instead. Your cabinet is untouched.

  9. Engine

    Docs get a project

    Docs now carry a first-class project alongside their lane — derived at ingest from the corpus/<project>/ path segment, indexed on both adapters, and left null rather than guessed when a path has no corpus segment. scope stays the lane (which corpus may read this); project is the work it belongs to. A retag pass backfills the column on files whose bodies never changed, so an existing cabinet fills in without re-embedding.

  10. Engine

    Facts stop vanishing: the index tier

    A fact past the brief’s token reserve used to disappear outright, though the record carried a compressed form all along. It now falls to an index tier — topicKey, its trigger clause, and its id, inside a budget of its own — so an agent still knows when the fact matters and can fetch it in full. Pinned becomes a delivery guarantee rather than a rank boost: the whole pinned set survives the reserve. Per-category floors reserve minimum slots so a rare-but-critical category can’t be crowded out by a larger one.

  11. API

    The {data, meta} delivery envelope

    Every list-shaped response — facts, sessions, docs, vision, recall, impact — returns {data, meta}: the array, plus a real computed available count and a truncation signal at the response itself, so a caller never discovers a silent drop after acting on it. GET /llms.txt serves the agent-facing manual unauthenticated.

  12. Engine

    impact — ask what depends on it first

    A reverse lookup over a literal subject — a container, a port, a path — for the moment before you stop, delete, or rename it. Lexical by construction, so it works with no embeddings configured. It is the one operation that crosses the doc lane boundary, and only citation-only: the caller learns a dependency exists without its content crossing.

  13. Engine

    Doc lanes, pruning, and fact identity

    Docs gain a scope lane, so corpora that shouldn’t mix can share one cabinet without polluting each other’s recall; docsPrune() reconciles rows whose files left the disk, which ingest alone never catches. Ingest stops indexing YAML frontmatter as body text. Facts gain a status lifecycle, an origin column, and a topic_key upsert identity.

  14. Engine

    Service-first pivot + Vision lane

    Grounded now runs as a service you reach through the console, MCP, and HTTP API; the ground command becomes an installer only (grounded install, Docker or systemd, auto-detected). A fourth lane — Vision — lands: one active narrative per scope, injected into every brief, never ranked by recall.

  15. Console

    Web console shipped

    A small Preact console, served by the API on the same origin: Overview, Recall, Facts, Sessions, Docs, Vision, Brief, and Health. Not a chat app — an inspector for the cabinet. Editing a fact is an explicit in-place edit.

  16. Site

    Marketing site moves to Astro

    Home, How it works, Self-hosting, Docs, and Changelog become one static site with a shared token/nav/footer layer. Cinematic Terminal design language locked.

  17. Engine

    Core engine, API, and MCP built

    The engine behind interfaces: SQLite + sqlite-vec + FTS5 as the zero-service default, Postgres + pgvector for scale, an HTTP API, and an MCP server. Hybrid recall (cosine + lexical, RRF k=60) with cited results.