# Installation

> Install GNO via Bun, prove local retrieval with gno doctor, and configure vector search on macOS.

Section: Getting Started  
Canonical: https://gno.sh/docs/installation  
Markdown: https://gno.sh/docs/installation.md

After indexing, [compiled project context](https://gno.sh/docs/compiled-context) can produce an explicitly included, cited Markdown handoff. It needs no extra service and does not replace agent instructions or enable automatic refresh.

GNO ships as a TypeScript CLI package installed and run by Bun. The same package exposes a web server, TypeScript SDK, and MCP server. The supported runtime is Bun 1.4.1 or newer. On an older Bun, `gno serve`, `gno daemon` and `gno mcp` still start but print a warning: older Bun releases have bugs that can crash a long-running server.

Keep the installed package intact: local models run in a worker that Bun starts from the package source. A standalone `bun build --compile` binary cannot run local models. No separate daemon installation is required.

## macOS and Linux

```
bun install -g @gmickel/gno
```

On macOS, vector search requires the Homebrew build of SQLite so GNO can load the SQLite extension for vector similarity:

```
brew install sqlite3
```

After indexing at least one folder, verify with `gno doctor`. Alongside environment checks, doctor derives a bounded term from each local collection and proves that lexical retrieval returns the expected document.

```
gno doctor
```

## Windows

Current support target is **windows-x64**. The CLI path works via Bun/global install, and the desktop beta ships as a packaged Windows zip on GitHub Releases. Windows arm64 is not supported yet.

```
bun install -g @gmickel/gno
```

## Desktop beta

The packaged desktop shell wraps `gno serve` in a native window with the workspace UI pre-wired. Grab a build from [GitHub Releases](https://github.com/gmickel/gno/releases) and run it like any other desktop app. Desktop builds are beta and may trail the current CLI package; verify the version attached to the release before choosing it over the CLI.

Quitting the app stops the server it started. If the app crashes or is force-quit, the server shuts itself down as well, so the next launch starts cleanly.

## Verify your install

```
gno --version
gno doctor
gno status
```

`gno doctor` surfaces path resolution, SQLite version, model cache location, disk space, embedding freshness, and retrieval activation. `gno status` exposes the same activation contract without loading or downloading models or starting a connector runtime. A passed lexical proof means the collection is usable even when semantic search remains pending. Status reports degraded state but still exits 0; doctor exits non-zero when lexical activation fails. A collection with no documents yet is not a failure: doctor shows it as informational (`i`) and status lists it as `no documents yet`. Add files, then run `gno update`.

## Connect your AI tools

Most users install a skill or MCP target so the client can search the local index and return cited snippets. One command per client:

```
# Coding agents (zero-overhead skill install)
gno skill install --target claude --scope user # Claude Code
gno skill install --target codex --scope user
gno skill install --target opencode --scope user
gno skill install --target openclaw --scope user
gno skill install --target hermes --scope user
gno skill install --target all --scope user # all agents

# AI assistants and editors (MCP)
gno mcp install --target claude-desktop
gno mcp install --target cursor
gno mcp install --target zed
gno mcp install --target windsurf
gno mcp install --target claude-code
gno mcp status
```

Full client list + write-access options: [MCP reference](https://gno.sh/docs/mcp). Per-client setup guides: [Claude Code](https://gno.sh/docs/claude-code), [Claude Desktop](https://gno.sh/docs/claude-desktop), [Cursor](https://gno.sh/docs/cursor).

Installation and verification are separate. The Web UI’&#x73;**&#x20;Connectors** page offers an explicit read-only retrieval check for installed MCP targets. Installed skill targets remain `target_runtime_unverifiable` because GNO can inspect their files but cannot prove that a client loaded or executed them.

## Next steps

- Run [the quickstart](https://gno.sh/docs/quickstart) to index and search your first collection
- Tune presets and collections: [configuration](https://gno.sh/docs/configuration)
- Publish a note publicly: [gno.sh publishing](https://gno.sh/publish)
