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

# Install ShoulderTap

> Install the shouldertap package, generate a starter configuration with shtap init, and understand what gets written to disk.

ShoulderTap is a self-hosted Python service. You install the `shouldertap` package, which provides the `shtap` command-line tool, then generate a config and run the engine.

## Requirements

* **Python 3.11 or newer**
* A machine you control to run the engine — it holds all state in a local SQLite file, so no external database is required to get started.

## Install

From a clone of the repository:

```bash theme={null}
pip install -e .
```

This installs the `shouldertap` package and the `shtap` console entry point. Verify it:

```bash theme={null}
shtap --help
```

<Tip>
  For development, the project uses [uv](https://docs.astral.sh/uv/). `uv sync` installs the full dependency set including test and lint tooling. See `CONTRIBUTING.md` in the repository.
</Tip>

## Initialize a config

Generate a starter configuration:

```bash theme={null}
shtap init
```

`shtap init` prompts for an organization name and writes two files to the current directory:

<ResponseField name="shouldertap.yaml">
  Your configuration: organization details, the LLM and Slack settings, server options, defaults for escalation and rate limits, and the expert registry. See [Configuration](/run/configuration) for every setting.
</ResponseField>

<ResponseField name=".env.example">
  Placeholders for every secret ShoulderTap reads from the environment. Copy it to `.env` and fill in real values — `.env` is gitignored and never committed. Secrets are never stored in `shouldertap.yaml`; the config only names the environment variables to read.
</ResponseField>

You can pass the organization name non-interactively:

```bash theme={null}
shtap init --org-name "Acme Data Team"
```

## Next steps

<CardGroup cols={2}>
  <Card title="Configuration" icon="gear" href="/run/configuration">
    Fill in `shouldertap.yaml` and map secrets into `.env`.
  </Card>

  <Card title="Run the server" icon="play" href="/run/serve">
    Start the engine with `shtap serve`.
  </Card>
</CardGroup>
