Guides Getting started
Getting started
Install Egghead, configure an LLM provider, write a record, hold a conversation. About ten minutes.
This guide takes you from nothing to a running Egghead node with one record in your store and one conversation against an agent. Each step depends on the one before it, so work through them in order. By the end you will know which other guide to read next for whatever you want to do.
Prerequisites
You need a Mac (Apple Silicon or Intel) or a Linux machine on x86_64 or arm64. Windows is not supported. You also need an API key for at least one LLM provider, since the agent layer cannot do anything without one. Egghead supports Anthropic, OpenAI, Google, xAI, Groq, DeepSeek, Mistral, and OpenRouter, and it can talk to local runners like Ollama or LM Studio. The record store itself works with no provider configured, but every feature that calls a model returns an error in that mode.
On Linux, install inotify-tools and bubblewrap from your
package manager before continuing. Egghead uses the first to
notice when you edit a record and the second to sandbox the file
and process operations agents are allowed to perform. The
installer warns if either is missing, and egghead doctor
re-checks at any time.
Install
Run the install script:
curl -fsSL https://raw.githubusercontent.com/mwunsch/egghead/main/install.sh | sh
The script downloads a self-contained binary to
~/.local/bin/egghead. If that directory is not on your PATH
yet, add it. Prebuilt binaries are also published on the
GitHub releases page
if you would rather fetch them by hand.
Confirm the install worked by asking for help:
egghead --help
You should see a list of subcommands.
First-run setup
egghead init
The wizard asks three questions and writes
~/.config/egghead/config.yml at the end. First, it asks where
your records should live; the default is ~/.egghead, and you
can change it later by editing the config file. Second, it asks
which LLM provider to set up and where to find the API key; you
can either paste the key directly or point at an environment
variable. Third, it fetches the available models for that
provider and lets you pick one as the default.
You can re-run egghead init at any time, or you can edit
config.yml by hand. The full schema lives in
Configuration.
Then verify the install picked up everything correctly:
egghead doctor
doctor reports on the config file, the records directory, each
configured provider, and any platform-specific dependencies. If
it finds a problem, the message tells you how to fix it.
Launch the TUI
egghead
The TUI opens in records mode, which is a Notational
Velocity-style records browser: instant search at the top,
arrow-key navigation, a preview pane on the right. Type a title
that does not match an existing record and press Enter; Egghead
opens $EDITOR with a scaffolded Markdown file for you to fill
in.
To switch to chat mode, type /chat. Chat mode is an IRC-style
shared transcript that includes you and one or more agents.
You send messages by typing and pressing Enter; you address a
specific agent with @<agent-id>; you run commands like /save
and /handoff from the same prompt. Esc returns to records
mode, and Ctrl+Q quits the TUI altogether.
Write your first record
Stay in records mode and type a title that does not match
anything in your store, like my first note. Press Enter, and
your editor opens a scaffolded Markdown file. Write a sentence,
save, and quit the editor. The new record is in the list
immediately and is searchable as soon as you start typing in the
search bar.
The record format — frontmatter, wikilinks, classes, the lot —
is documented in Records. Read that
guide next if you want to understand what [[wikilinks]] resolve
to and how class: changes the system’s behavior.
Hold a conversation
Type /chat to enter chat mode. You are now in the default chat
room, looking at an empty transcript. Send a message:
Hi. What's in this records store?
The built-in index agent ships with every install. It holds
read-only access to your records and exists so that a fresh
install always has someone to talk to. With only index in the
roster, every open message activates it. Try addressing it
directly, too:
@index list every record tagged "note"
When you are done, save the conversation:
/save
The transcript becomes a record in your store with
class: transcript, which means you can search it, link to it,
and rejoin it later by typing /join chat/<id>. The full set of
slash commands is documented in
Chat rooms.
Add an agent
index is intentionally limited; for anything beyond looking at
the store, you write your own agents. The fastest path is the
interactive wizard:
egghead agents new
The wizard walks you through naming the agent, picking a model,
selecting capabilities (sorted from low risk to high), and
writing the system prompt in $EDITOR. It saves the result as
agents/<slug>.md in your records directory. The agent is live
in chat rooms immediately, with no restart and no reindex
step, because the file watcher noticed the new record and
started a process for it.
The full anatomy of an agent record is in
Agents, and the full meaning of the
capabilities: field is in
Capabilities. If you are coming
from a framework where agents are Python classes or YAML role
definitions, the thing to know is that an Egghead agent is a
file. Editing the file updates the running agent on the next
turn.
Wire Egghead into Claude Code
If you use Claude Code, you can expose your records and agents
to it as MCP tools. Add an entry to .mcp.json in your project
or to ~/.claude.json for a global hook-up:
{
"mcpServers": {
"egghead": {
"command": "egghead",
"args": ["mcp"]
}
}
}
Restart Claude Code. The fifteen egghead_* tools appear in
the tool list, and Claude can now search your records, prompt
your agents, and ask the room for input the same way it uses
its other MCP servers. The tool surface and the HTTP transport
alternative are documented in MCP server.
Run a long-lived node
If you would rather have Egghead running in the background with a web UI and a network-reachable MCP endpoint, use the server mode:
egghead serve
The web server starts on http://localhost:4000, listening only
on the loopback interface by default. From that one port you get
a records browser, the chat rooms in a windowed UI, and the MCP
HTTP endpoint at /mcp. For the full operational story —
running under systemd or launchd, putting a reverse proxy in
front, exposing the node beyond your laptop — read
Running a node.
Command reference
Worth knowing as you explore:
egghead Launch the TUI.
egghead init First-run wizard.
egghead serve Web UI and MCP HTTP server.
egghead mcp MCP stdio server, for editor integrations.
egghead doctor Diagnose configuration and dependencies.
egghead agents list Show running agents and their token usage.
egghead agents new Interactive agent creation.
egghead skills list Show available skills.
egghead config path Print the resolved configuration path.
egghead llm list Show configured LLM providers.
egghead logs Tail the application log.
Every subcommand accepts --help for a flag listing.
When something breaks
Run egghead doctor first. It catches the common first-run
failures: a missing API key environment variable, the absence
of inotify-tools on Linux, a malformed config.yml. The
message tells you exactly what is wrong and how to fix it.
If doctor looks clean but something is still off, tail the
log with egghead logs. Errors from the supervision tree and
from the agent loop land there.
If you think you have found a bug, open an issue at mwunsch/egghead/issues.