> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oktolabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Install

> Get Okto Pulse running locally in under two minutes. Python 3.11+, no account required.

# Install

Pulse runs as a single Python process on your machine. No cloud account. No data leaves your system. Two commands and you have a board.

## Prerequisites

* Python 3.11 or higher
* pip

```bash theme={null}
python --version
```

If you are on macOS with Homebrew: `brew install python@3.12`

***

## Install Pulse

<Tabs>
  <Tab title="pip (recommended)">
    ```bash theme={null}
    pip install okto-pulse
    ```

    Verify:

    ```bash theme={null}
    okto-pulse --version
    ```
  </Tab>

  <Tab title="Docker">
    Pull and run the signed image from GitHub Container Registry:

    ```bash theme={null}
    docker run \
      -p 8100:8100 \
      -p 8101:8101 \
      -v ~/.okto-pulse:/root/.okto-pulse \
      ghcr.io/oktolabsai/okto-pulse:latest
    ```

    The image is signed with Sigstore keyless signatures. SLSA provenance and a CycloneDX SBOM ship as image attestations. The embedding model is pre-baked — no first-run download needed.

    Open `http://localhost:8100` once the container is up.
  </Tab>

  <Tab title="From source">
    Clone both active repos as siblings:

    ```bash theme={null}
    git clone https://github.com/OktoLabsAI/okto-pulse-core
    git clone https://github.com/OktoLabsAI/okto-pulse
    ```

    Install in development mode:

    ```bash theme={null}
    pip install -e ./okto-pulse-core -e ./okto-pulse
    ```
  </Tab>
</Tabs>

***

## Initialize

Run this in the directory where your agent will work. Pulse creates your board and writes the MCP configuration file your agent will use to connect.

```bash theme={null}
okto-pulse init --agents
```

What it does:

* Creates `~/.okto-pulse/` with your database and board data
* Writes `.mcp.json` in the current directory with a scoped API key

<Warning>
  `.mcp.json` contains an agent API key. Do not commit it to a public repository. Add it to `.gitignore`.
</Warning>

***

## Start

```bash theme={null}
okto-pulse serve --accept-terms
```

Pulse starts two listeners on a single process:

| Endpoint                  | Default URL                 |
| ------------------------- | --------------------------- |
| Web board and API         | `http://localhost:8100`     |
| MCP server (agent access) | `http://localhost:8101/mcp` |

Open `http://localhost:8100`. Your board is ready.

**First run note:** If you installed via pip, Pulse downloads the semantic search model (`all-MiniLM-L6-v2`, \~90 MB) on first start. This takes 30–60 seconds depending on your connection. The model is cached; subsequent starts are fast.

***

## Verify

```bash theme={null}
okto-pulse status
```

Both ports should report as live. If you used custom ports:

```bash theme={null}
okto-pulse serve --api-port 9000 --mcp-port 9001 --accept-terms
okto-pulse status --api-port 9000 --mcp-port 9001
```

If MCP port changes after initialization, regenerate `.mcp.json`:

```bash theme={null}
okto-pulse init --agents
```

***

## Where your data lives

All Pulse data is stored locally at `~/.okto-pulse/`:

```text theme={null}
~/.okto-pulse/
  data/pulse.db            SQLite database (boards, specs, cards, decisions)
  boards/{id}/graph.lbug   per-board knowledge graph
  uploads/{id}/            file attachments
  global/discovery.lbug    cross-board discovery index
```

Nothing is sent to a remote server.

***

## Next steps

<CardGroup cols={2}>
  <Card title="Connect your agent" href="/mcp-setup">
    Wire up Claude Code, Cursor, Cline, or any MCP-compatible agent.
  </Card>

  <Card title="First workflow" href="/quickstart">
    Idea → spec → cards in your first session.
  </Card>
</CardGroup>
