# Onboarding

> From nothing to logs arriving, then alerts landing in Slack and getting investigated. MCP first, then your agent does the rest.

This sets up three things: telemetry flowing into Fixter, alerts delivered to Slack, and
those alerts investigated automatically. Steps 1 and 2 are done in one sitting. Step 3 is
done a day later, once enough logs have accumulated to calibrate alerts against.

## Connect your agent first

Everything runs through Fixter's MCP server, so connect it first. In Claude Code, add the
server in a terminal:

```sh
claude mcp add --transport http fixter https://mcp.fixter.dev/mcp
```

Then, inside Claude Code, run `/mcp` to sign in. Adding the server only registers it;
`/mcp` is what opens the browser sign-in.

```
/mcp
```

Any other agent takes the same endpoint in its MCP config, and walks its own browser
sign-in on first connection:

```json
{ "mcpServers": { "fixter": { "type": "http", "url": "https://mcp.fixter.dev/mcp" } } }
```

Signing in is what lets your agent fetch your ingestion credentials, so it comes before the
setup below.
Per-client details: [MCP](/setup/mcp/).

<Steps>

1. ### Get your logs in

   Send your telemetry to Fixter one of three ways. The tab you choose here also selects
   the instructions in step 3.

   - **On Claude Code?** Use the plugin. `/fixter:onboard` wires the OpenTelemetry log
     bridge and provisions your key through a one-time link, the steps most likely to go
     wrong by hand.
   - **On another coding agent?** Connect it over MCP (above), then hand it the
     [OpenTelemetry page](/setup/opentelemetry/); it pulls your ingestion endpoint and a
     one-time key link, which you open to reveal the key.
   - **No coding agent?** Set the four environment variables by hand.

   <Tabs syncKey="path">
     <TabItem label="Claude Code">

   Install the plugin and run onboarding. Run these one at a time (Claude Code takes one
   slash command per paste):

   ```
   /plugin marketplace add fixter-dev/fixter-skills
   ```

   ```
   /plugin install fixter@fixter-skills
   ```

   Reload so the new command is available (`/fixter:onboard` does not exist until you do):

   ```
   /reload-plugins
   ```

   ```
   /fixter:onboard
   ```

   It detects your stack, adds the OpenTelemetry packages and environment variables, and
   provisions your API key as a one-time link. Depth, languages, and Kubernetes are on the
   [plugin page](/setup/claude-code-plugin/); you should not need it to get started.

     </TabItem>
     <TabItem label="Another coding agent">

   The docs are agent-readable, so hand the setup to whatever agent you use:

   ```
   Set up OpenTelemetry export to Fixter for this service,
   following https://docs.fixter.dev/setup/opentelemetry.md
   ```

   Connected over MCP, it calls `get_ingestion_credentials` to get your endpoint and a
   one-time link, then wires up OpenTelemetry from that page. The tool does not return the
   key: it returns a single-use URL (expires in 24 hours) that you open in a browser to
   reveal the key once, and every call mints a new key. When the key goes into a header, use
   the full value `Authorization=Bearer <key>`; in a `.env` file write the literal key (no
   `$FIXTER_API_KEY` expansion there) and keep the `Bearer ` prefix.

     </TabItem>
     <TabItem label="Manual">

   Create a key at [Settings > API keys](https://app.fixter.dev/settings/api-keys), then
   set four environment variables on your service:

   ```sh
   OTEL_SERVICE_NAME=checkout-service
   OTEL_EXPORTER_OTLP_ENDPOINT=https://ingest.fixter.dev
   OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
   OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer $FIXTER_API_KEY"
   ```

   Per-language instrumentation and the collector paths are on
   [Send data with OpenTelemetry](/setup/opentelemetry/).

     </TabItem>
   </Tabs>

   **Then deploy and confirm data is arriving.** Give it two or three minutes and ask your
   agent, or open the [Logs page](https://app.fixter.dev/logs) and filter by your service.
   Ask for the three signals by name, not "is telemetry arriving?": traces can show up while
   logs never do (see the log-library note on the
   [OpenTelemetry page](/setup/opentelemetry/)), and a single-signal question hides that.

   ```
   do I have logs, traces, and metrics in fixter for this service?
   ```

   {/* fx-image: Logs page with live tail on and fresh entries arriving */}

2. ### Connect Slack

   Automatic alerts run over your data from the start, but they are delivered to Slack, so
   until Slack is connected there is nowhere for them to appear. Connect it now.

   In [Settings > Integrations](https://app.fixter.dev/settings/integrations), connect your
   Slack workspace, add a channel, and turn on auto-investigate for it. The steps are on
   the [Slack page](/setup/slack/). One thing that is easy to miss: invite the bot to the
   channel in Slack, or it cannot post there.

   ```
   /invite @Fixter
   ```

   With that done, every alert is delivered to the channel, and with auto-investigate on
   each one is investigated in its thread. Confirm the connection by mentioning the bot:

   ```
   @Fixter is checkout healthy right now?
   ```

   You should get an investigation back. To also let an AI agent open the fix as a pull
   request, connect GitHub from the same Integrations page. See [GitHub](/setup/github/).

   Not on Slack? Email [info@fixter.dev](mailto:info@fixter.dev) with the channel you use
   and we will work on getting it connected.

3. ### Tune your own alerts

   Come back after a day, once enough logs have accumulated to calibrate against. The
   automatic alerts have covered you until now; this adds alerts specific to your app.

   <Tabs syncKey="path">
     <TabItem label="Claude Code">

   Re-run onboarding. It resumes from where it stopped and runs the alert stage now that
   there is data:

   ```
   /fixter:onboard
   ```

   The `alert-setup` stage reads your project, works out which flows are worth watching,
   and creates the rules you accept.

     </TabItem>
     <TabItem label="Another coding agent">

   Ask your connected agent to set up alerts; it uses the same alerting tools:

   ```
   set up Fixter alerts for this service
   ```

     </TabItem>
     <TabItem label="Manual">

   Open [Alerts](https://app.fixter.dev/alerts) and create a rule from a template, or
   from a query you are looking at on the Logs page.

     </TabItem>
   </Tabs>

   On a brand-new service alert setup may still defer until more data lands. That is
   expected, and the automatic alerts keep covering you meanwhile. Full detail on
   [Alerts](/using-fixter/alerting/).

</Steps>

## If it does not work

- **The `/fixter:onboard` command or a skill does not run.** The plugin is installed but
  not loaded. Run `/reload-plugins`, or restart Claude Code.
- **Your agent says the MCP is not connected.** It looks for tools such as
  `get_ingestion_credentials`. Add the server as above, restart the agent, and sign in
  with `/mcp`.
- **Nothing arrives after a few minutes.** The service has to be redeployed with the new
  environment variables in place. Check that `OTEL_EXPORTER_OTLP_ENDPOINT` is
  `https://ingest.fixter.dev` and the key is present, then see the
  [OpenTelemetry troubleshooting steps](/setup/opentelemetry/).
- **The bot never replies in Slack.** It has not been invited to that channel. Run
  `/invite @Fixter` there.

Still stuck? Email [info@fixter.dev](mailto:info@fixter.dev) and one of our founders will help you fix your problem asap.

## Next

- [Telemetry](/using-fixter/telemetry/): what you just started sending, and why each signal matters
- [Debugging](/using-fixter/debugging/): querying your telemetry from your editor
- [Investigations](/using-fixter/investigations/): what happens when an alert fires
- [Data model](/reference/data-model/): what a log, span, and metric look like inside Fixter