A personal knowledge platform that runs on your own Urbit ship. Write pages in markdown, gemtext, or HTML, or in Hoon so they compute their own content. Keep a private, tagged knowledge store that you and your AI agents share. Search all of it. Everything you publish is addressed urb://~ship/path and travels peer-to-peer between ships, with no DNS, no web server, and no host in the middle.
lattice's ship side is a nexus inside the grubbery framework. Your pages and your knowledge live in grubbery's vault on your ship. The client is served by the ship too, so there is nothing to install beyond one dojo command.
|install ~ricsul-bilwyt %grubbery pulls the desk, boots the lattice nexus and binds /apps/lattice. Updates arrive on their own through kiln./apps/lattice to read and /apps/lattice/app to write. On a phone, add it to your home screen: it is a full PWA that works offline.lattice-fs mounts your pages as local files, over HTTP or grubbery's local IPC. A cold mount warms in one round-trip, so grep and cat run from RAM, and editor backup files never touch the ship.
conflicts/.
urb://
Read anything any ship publishes, peer-to-peer over remote scry, from the web reader. Star pages as bookmarks; fetch urb://~ship/manifest to see a stranger's index; copy a remote file onto your own ship at a path you choose.
The knowledge store speaks MCP through eleven tools compiled into the ship itself: save, read, list, search, explore by tag, move, delete, restore, tag, untag, and list tags. Anything an agent saves shows up in the knowledge browser, and vice-versa. There is nothing to run beside the ship and nothing to register; the tools survive restarts and redeploys.
The cookie is a normal ship session, minted from /~/login with your
+code, and it is the only credential involved. Your
assistant's memory lives on your ship, not in someone's cloud.
Details in the docs.
No analytics, no third-party SDKs, no telemetry. The client is served by your ship and speaks only to it. Access is enforced by grubbery's per-directory ACLs: the knowledge store is owner-only, the HTTP API and the MCP tools require a valid ship session, and shared pages are readable only by the ships and groups you grant.
What you publish is public by design, in the Urbit namespace and, if you choose, on the clearweb. Nothing else leaves your ship.
The ship side is Hoon: a grubbery nexus whose pages and memories are grubs in the vault, published into the Urbit namespace and served to other ships over remote scry. The web client is served by the same nexus, with live updates over an Eyre SSE channel and a service worker that keeps the shell and your last-known tree at hand offline. The filesystem client is Rust, the desktop app is Tauri, and the MCP tools are Hoon compiled into the desk.
The desk is grubbery with lattice and its MCP server and nothing else. If you already
run a full grubbery from another publisher, read the
notes on switching first.
On first boot lattice also installs %obelisk for the optional search mirror.
Log into your ship's web login with your +code, then open
/apps/lattice to read and /apps/lattice/app to write. On a phone,
use your browser's Add to Home Screen: lattice is a full PWA with its own icon
and standalone window.
The same ship-served client in its own window, plus managed filesystem mounts, scheduled backups, and auto-detection of piers running on the same machine. Direct links resolve to the latest release; the releases page has older versions and notes.
Windows and Android use the PWA. The filesystem client on its own is
lattice-fs in the repo, built with cargo build --release.
New to Urbit? urbit.org/overview/running-urbit walks you through booting a ship.