Seed is the open-source implementation of the Hypermedia protocol. It is a small family of programs: a daemon that holds the data and talks to the network, apps that put a person in front of that daemon, services that add email, identity and agents, and tools for scripting. This section has one page per program. Each page is a map for contributors and operators. It is not a user manual.
Everything lives in one repository, github.com/seed-hypermedia/seed. The Go daemon and the protobuf definitions are built with Please and the ./dev script. The TypeScript apps are a pnpm workspace under frontend/. The vault and the agents service are separate Bun workspaces. The mobile app manages its own dependencies with npm. Contributing explains the setup.
The programs
Program | What it is | Where | Talks to the daemon over |
|---|---|---|---|
The Go node: storage, indexing, signing, libp2p sync, gRPC and HTTP. |
| It is the daemon. | |
The Electron app: browser, editor, archive and a full peer. Spawns its own daemon and a local agents server. |
| gRPC-web on the daemon's HTTP port. | |
The site server and gateway: server-rendered pages, the Seed API, site services, browser signing. |
| gRPC-web on the daemon's HTTP port, with a per-request bearer token. | |
The command-line client for documents, comments, contacts, capabilities and keys, and the tool that publishes this folder. |
| The Seed API of a site over HTTPS; optionally a local daemon. | |
The notifications and email service. |
| The daemon's activity feed over gRPC-web. | |
The zero-knowledge identity vault that keeps account keys and delegates session keys to browsers. |
| gRPC-web to the site's daemon for account lookups and signing, and | |
The Expo app for iOS, Android and web. |
| The Seed API of a site. | |
A raw-data browser for the network: documents, blobs, feeds, an API lab. |
| The Seed API of a site. | |
The agent runtime: a signed action API, sessions, tools and triggers. |
| The Seed API, as a client with delegated keys. |
The shared packages
Four TypeScript packages sit under the apps, in frontend/packages/.
@seed-hypermedia/client, the SDK. It has no framework dependency and is published to npm. It holds Hypermedia ids and types, blob creation and signing, CBOR, the HTTP client for the Seed API, markdown conversion, the query grammar, key files and vault helpers, and the Hypermedia Schemas engine. Every app uses it, and so do the CLI, the vault and the agents service.
@shm/shared, the app layer: generated gRPC clients, the typed API router and its HTTP server adapter, the universal client abstraction, React Query models, routes and translations. It is not published.
@shm/ui, the React component library, page components, and the shared agents client and models used by desktop, web and mobile.
@shm/editor, the block editor, a BlockNote fork on TipTap and ProseMirror, with a server-side renderer.
The dependency direction is client, then shared, then ui, then editor. The vault and the agents service consume client and shared through Bun file: dependencies, which copy the packages at install time. A watcher script reinstalls them during development.
Ports at a glance
Port | Prod | Dev | Belongs to |
|---|---|---|---|
Daemon P2P | 56000 | 58000 | daemon, spawned by the desktop app |
Daemon HTTP, gRPC-web, | 56001 | 58001 | daemon |
Daemon native gRPC | 56002 | 58002 | daemon, unused by the TypeScript apps |
Daemon metrics | 56003 | 58003 | daemon |
Desktop API bridge, | 56004 | 58004 | desktop app |
Agents server | 3050 | 3051 | agents |
Vault | 3030 | vault | |
Web app | 3000 | web | |
Notify | 3060 | notify | |
Explorer | 5173 | explore |
A daemon started on its own, without the desktop app, defaults to 55000, 55001 and 55002. Hosted sites run their daemon on 56000 behind a reverse proxy.
See also
Building on Hypermedia, for using these programs from your own code.
Self-hosting, for running a site.
Contributing, for developing them.
The web API, the Seed API most of these programs speak.
Seed Agents, what the agents service runs.
The protocol, what the daemon implements.
Do you like what you are reading? Subscribe to receive updates.
Unsubscribe anytime