Install Estelle
Install the native plugin for Claude Code, Codex, Kimi Code, Grok Build or Cursor, or connect a tools-only MCP client.
View as MarkdownThe native plugin connects Estelle's hosted MCP tools and the host's session hooks. You do not need to clone Estelle's backend, run a local MCP server, or install the Estelle CLI for this route.
Choose the connection you need:
| Route | What it provides |
|---|---|
| Native coding-agent plugin | Hosted tools plus the supported host's session hooks. |
| Hosted MCP only | Tools in another MCP client, without installing session capture hooks. |
| Optional Estelle CLI | Local indexing and terminal commands, with its own setup. |
#Check three prerequisites
- Install the coding host and use a version with its native plugin feature.
- Make external Node.js 22 or later available as
nodeto that actual host process. A bundled host runtime is not a substitute for the external command the hooks launch. - On Claude Code, MCP signs in through your browser. Session capture hooks, and every other host, use an
ESTELLE_API_KEYfrom your Estelle account, which must be available to the host process.
A GUI app started from the Dock or Start menu may not inherit your terminal's environment. Check from the environment that launches the actual host, without printing the key:
node --version
node -e "console.log(process.env.ESTELLE_API_KEY ? 'ESTELLE_API_KEY present' : 'ESTELLE_API_KEY missing')"Presence is not authentication. The plugin does not provision an account or install Node for you. Do not paste credentials into an agent conversation, a shared plugin variable, or support output.
#Install a native plugin
The public package and its maintained host guides are at uqeu/estelle-plugins. These instructions describe the v0.0.12 package; package registration, authenticated MCP access and working hooks are separate checks.
Inside Claude Code, run:
/plugin marketplace add uqeu/estelle-plugins
/plugin install estelle@estelle-pluginsReview the normal installation and Estelle hook prompts, restart Claude, run /mcp, and sign in with your browser. Add ESTELLE_API_KEY only if you want session capture, then quit and reopen the app so it reads the key. If you installed the older estelle@fatelabs plugin, run setup claude from the new package to migrate. See the Claude Code guide.
From your shell, outside the Codex conversation:
codex plugin marketplace add uqeu/estelle-plugins --ref main
codex plugin add estelle@estelle-pluginsOpen /hooks and review Estelle's hooks. t grants trust; space only toggles enablement. Start a fresh session after approval. An enabled package alone does not prove the hooks can run. See the Codex guide for updating an existing marketplace.
Use the native commands inside interactive Kimi Code:
/plugins install https://github.com/uqeu/estelle-plugins
/plugins info estelle
/reloadThe GitHub URL selects the latest published release. A change on the repository's main branch is not automatically a new release. Review the package and normal approval prompts; /reload or /new applies it to a session.
For an explicitly requested fresh Estelle registration, run /plugins remove estelle and /reload before the GitHub install. This is an Estelle plugin reset, not permission to delete chats, Kimi's home, unrelated settings, other hosts or shared memories.
Do not run kimi -p '/plugins …': it sends a model prompt instead of operating the native installer. Do not launch a model turn as an installation test. If an agent cannot operate the interactive installer, it should give you the exact command and report installation pending. See the Kimi Code guide.
grok plugin install uqeu/estelle-plugins@v0.0.12#plugins/grok
grok plugin enable estelleUse the normal approval flow and start a fresh session. See the Grok Build guide.
Use the editor's Customize page to install from an available marketplace. For this Git repository, use a team marketplace import if your plan supports it. Otherwise, follow Cursor's documented local plugin loading: copy the contents of plugins/cursor from the public plugin repository into a new ~/.cursor/plugins/local/estelle directory, then run Developer: Reload Window.
Local plugins must be allowed, and a marketplace plugin with the same name takes precedence. Ensure the editor process inherits ESTELLE_API_KEY. Inspect the plugin components, Hooks and MCP in Customize after reload. A terminal Agent CLI inventory does not prove the editor loaded or authenticated the plugin. See the Cursor guide.
#Verify package, MCP and hooks separately
- Inspect the native package registration and version.
- In the new session's actual advertised tools, use one advertised read-only MCP tool to check authenticated access. Do not invent an identity tool or repeat session-history reads as an authentication test.
- Check a new session's hook status and acknowledged timeline entries separately. A connected badge or tool list does not prove session capture, and a stored entry does not promise a complete transcript.
No paid task or model turn is needed as an installation test. Report any pending prerequisite rather than calling setup complete.
The public repository also contains an optional maintainer connection diagnostic. Its current source checks MCP initialization, rejects an invalid synthetic credential, and requires each invalid write request to reach its specific missing-session validation. A 401, 403, 404 or 429 from a write route is not that proof. The diagnostic sends no valid session or checkpoint write; it does not certify native hooks. A diagnostic change on main is not a new plugin runtime release.
Node build and test checks run on Linux, macOS and Windows. That matrix does not certify every native host on every OS, native login, Windows file permissions, or full-history capture. See the support boundaries.
#Install the CLI
The CLI supports macOS and Linux on x86_64 and arm64. With Node.js 18 or later, install it with npm:
npm i -g @fatelabs/estelleWithout npm, use the release installer:
curl --proto '=https' --tlsv1.2 -fsSL \
https://github.com/uqeu/estelle-cli/releases/latest/download/install.sh | shCreate an API key in Settings → API keys, then run:
estelle login
estelle setupRun estelle setup from the repository root. It configures Estelle for the repository, indexes it, and checks that Estelle can answer using a symbol from that code.
estelle login stores the key for later commands. You can also provide ESTELLE_API_KEY in the environment; do not commit the key or paste it into support messages.
#Connect another MCP client
The hosted server is:
https://api.fatelabs.ca/mcpFor a client that supports browser sign-in, add this server configuration:
{
"mcpServers": {
"estelle": {
"type": "http",
"url": "https://api.fatelabs.ca/mcp"
}
}
}Start a new session and approve the sign-in request. If the client cannot use browser sign-in, configure an Authorization: Bearer <your-key> header instead.
For Claude Code without the plugin, add the hosted server directly:
claude mcp add --transport http estelle https://api.fatelabs.ca/mcpOr use an API key stored in your environment:
claude mcp add --transport http estelle https://api.fatelabs.ca/mcp \
--header "Authorization: Bearer $ESTELLE_API_KEY"#Let the CLI write client configuration
After estelle login, run the command for your client from the repository root:
| Client | Command |
|---|---|
| Cursor | estelle init --client cursor |
| VS Code | estelle init --client vscode |
| Windsurf | estelle init --client windsurf |
| JetBrains through Junie | estelle init --client jetbrains |
Run estelle init without --client to detect supported editors. Use --dry-run when you want to inspect a configuration change before applying it.
#Use the CLI instead of the Codex plugin
To provide session hooks and serve Estelle's tools over stdio:
estelle install-hooks
codex mcp add estelle -- estelle mcp-serverOpen Codex, run /hooks, trust the hooks, and restart the session.
#Index and update a repository
From the repository root:
estelle sweep --dry-run
estelle sweep--dry-run lists the files that would be sent and sends nothing. A sweep reads the files Git can see in the checkout, including uncommitted changes. Use it when the available index must include work you have not pushed.
Run estelle reindex after later changes. If Estelle reports that an index is stale or missing, update it before relying on code answers. You can also index through the GitHub connection instead; see GitHub.
#Capture local sessions
The native plugins above supply their host-specific hooks. The optional legacy CLI route installs its own Claude Code and Codex hooks separately:
estelle install-hooksRestart the agent afterward. In Codex, also run /hooks and trust Estelle's hooks. Local session timelines require active, trusted hooks. MCP activity may appear separately as a saved activity record.
To remove only Estelle's hooks:
estelle uninstall-hooksTo remove Estelle from editor configurations written by the CLI:
estelle remove#Check the installation
estelle --version
estelle doctorestelle doctor checks credentials and setup without printing secrets. To see whether a newer CLI release is available:
estelle upgradeestelle upgrade reports the release and prints the installation command; it does not perform the upgrade.
For connection failures, see Troubleshooting.
#Windows and the optional CLI
The legacy CLI instructions below use WSL. This is separate from the native plugin package and its Node.js runtime; do not require WSL for every native plugin host:
- In PowerShell as Administrator, run
wsl --install, restart, and open Ubuntu. - Install the CLI inside WSL with the release installer above.
- Add the install location to your shell path if needed, then run
estelle --versionandestelle login. - Install Claude Code or Codex inside WSL as well, and keep the repository on the WSL filesystem so the agent and hooks can reach
estelle.
The hosted MCP server can also be used without installing the CLI.