lattice

A knowledge base for you
and your AI agents.

lattice gives your AI agents long-term memory and a library of reference they can read. It keeps your own notes and documents in one private store. And it publishes what you choose, peer-to-peer or on the open web. All of it runs on a personal server you control, so your data and your agents' memory never touch someone else's cloud.

Agent memory · Claude Code + Hermes Private notes & docs Peer-to-peer publishing Filesystem mount Self-hosted · your server

How it works

lattice runs on your own server and serves its own web client, so there is nothing to host elsewhere and nobody to sign up with. One command installs it. Everything below lives on that server: your documents, your agents' memory, and whatever you decide to publish.

the server
one command to install
lattice installs onto your Urbit ship, a personal server you run. Paste one command into its console and lattice is there, reachable at /apps/lattice. New versions arrive on their own.
the client
reader, workspace, PWA
Open /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.
the surfaces
web, desktop, files, agents
A web app, an optional desktop app, a filesystem mount that turns your pages into plain files, and plugins that give Claude Code and Hermes memory. One store behind all of them.
urb://~nisfeb/notes/urbit one page, fetched straight from ~nisfeb's server urb://~nisfeb/manifest everything ~nisfeb has published https://…/apps/lattice/c/site the same page on the open web, if you put it there

Memory and knowledge for your agents

Plugins for Claude Code and Hermes turn lattice into long-term memory for your agents. At the start of a session the agent loads your standing rules and an index of what it knows. With each task it recalls what bears on the work. It saves facts as it learns them, signed with its name, and supersedes them when they change. Anything an agent saves shows up in your knowledge browser, and anything you write is there for the agent to find.

Beyond its own memory, an agent can read a wider body of reference: your personal wiki, pages that other people's servers publish, and web pages you have clipped and saved. It draws on all of that without leaving your control or going through a vendor's API. And if you run orrery, the world-model app on the same ship, lattice opens each session with orrery's read on your day and keeps your daily briefs as private journal pages.

// in Claude Code /plugin marketplace add nisfeb/lattice /plugin install lattice@lattice

Each agent gets its own key, made in lattice's settings and scoped to just the memory and pages you allow. Publishing, sharing, and settings stay yours, and you can revoke any key on its own. Your agents' memory lives on your server, not in a vendor's cloud. Details in the docs.

What it does

What it isn't

Privacy

The only server lattice talks to is your own.

No analytics, no third-party SDKs, no telemetry. The web client is served by your server and speaks only to it. Access is enforced per directory: your notes are owner-only, the HTTP API and the agent plugins need a valid session or a scoped key, and shared pages are readable only by the people and groups you grant.

What you publish is public by design, addressed on the network and, if you choose, on the open web. Nothing else leaves your server.

Under the hood

lattice is built on Urbit, a personal server that is also a peer-to-peer network. The server side is written in Hoon and stores your pages and memories as content-addressed values, published into Urbit's shared namespace and served to other servers directly. The web client is served by that same server, with live updates over an event stream 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 agent plugins are small Node and Python clients of the server's HTTP API.

server
Urbit · Hoon
web
Reader, workspace, PWA · served by the server
desktop
Tauri · Linux, macOS
filesystem
lattice-fs · Rust FUSE
agents
Claude Code, Hermes · scoped keys
transport
Peer-to-peer

Install

1. On your server

:: paste into your ship's console |install ~ricsul-bilwyt %grubbery

lattice installs through grubbery, the small app platform it runs on, alongside the other apps ~ricsul-bilwyt publishes. Approve lattice's permissions at /apps/grubbery/permits and it binds /apps/lattice. It stays unavailable until you do. New versions arrive on their own, and one that needs a new permission asks first. If you already run grubbery from another publisher, read the notes on switching first.

2. Open it

Log into your server's web login with its access code (+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.

3. Optional: the desktop app

The same server-served client in its own window, plus managed filesystem mounts, scheduled backups, and auto-detection of servers running on the same machine. Direct links resolve to the latest release; the releases page has older versions and notes.

Linux AppImage chmod +x and run. Portable, needs FUSE 2. Download
Linux .deb sudo apt install ./lattice_*.deb on Debian, Ubuntu and derivatives. Download
macOS, Apple Silicon Disk image. First launch: right-click → Open (unsigned). Download
macOS, Intel Disk image. Same first-launch step. Download

Windows and Android use the PWA. The filesystem client on its own is lattice-fs in the repo, built with cargo build --release.

Don't have a server yet? urbit.org/overview/running-urbit walks you through booting one.