---
title: Overview
description: Capture crashes and errors from your machines, decide which are worth fixing, and suggest fixes.
mode: wide
---

Triage reads the systemd journal on each of your machines, picks out crashes, failed units, out-of-memory kills and errors, and groups them into issues on one server. A decision model can then tell you which issues are worth fixing, and a language model can suggest how.

```bash
# The issues on this machine, most recently seen first
triage collect
triage issues

# Ask a language model how to fix one
triage suggest <issue>
```

## How it fits together

<div style={{ display: "flex", flexWrap: "wrap", gap: "2rem", justifyContent: "center", margin: "1.5rem 0" }}>
  <figure style={{ margin: 0, width: "12rem", display: "flex", flexDirection: "column", alignItems: "center", textAlign: "center" }}>
    <img src="/illustrations/lens.svg" alt="" width="120" height="120" />
    <figcaption>Hosts read the logs</figcaption>
  </figure>
  <figure style={{ margin: 0, width: "12rem", display: "flex", flexDirection: "column", alignItems: "center", textAlign: "center" }}>
    <img src="/illustrations/funnel.svg" alt="" width="120" height="120" />
    <figcaption>The server groups them into issues</figcaption>
  </figure>
  <figure style={{ margin: 0, width: "12rem", display: "flex", flexDirection: "column", alignItems: "center", textAlign: "center" }}>
    <img src="/logo-dark.svg" alt="" width="120" height="120" />
    <figcaption>Models decide and suggest</figcaption>
  </figure>
</div>

Triage has four roles, and any machine can take on any of them:

| Role | Runs | Does |
| --- | --- | --- |
| Collect | `triage collect --follow --upload` | Reads the journal, redacts what it finds and sends it to the server |
| Serve | `triage serve` | Stores events, groups them into issues and enforces the daily AI limits |
| Decide | `triage work --decide` or `serve --decide` | Asks a decision model which new issues are worth fixing |
| Suggest | `triage work --suggest` or `serve --suggest` | Asks a language model how to fix the issues worth fixing |

AI only runs when you ask for it. Decide and suggest are off until you turn them on, and stop at their daily limits.

## Plan first

A small always-on box can serve while a machine with more power decides and suggests as a worker, or one machine can do it all. Before installing anything, decide which machine takes each role.

**[Plan your hardware](/hardware)**

What each role needs, and the setups that work best.

## Get started

1. **Install**

    The Arch packages, the Home Assistant app, the container or a release build. See [Install](/install).

2. **Run a server**

    Where events and issues live. See [Run a server](/setup/server).

3. **Add hosts**

    Collect from each machine. See [Add hosts](/setup/hosts).

4. **Add workers**

    Optional: run the models on another machine. See [Add workers](/setup/workers).

## Reference

**[Configuration](/configuration)**

Every setting.

**[Issues](/issues)**

States, labels and how models are measured.

**[Choices](/choices)**

Hosting and models, local or hosted.

**[Privacy](/privacy)**

What's captured, what's redacted and where it goes.

**[Libraries](/libraries)**

Talk to a server from your own Effect app.

**[Commands](/commands)**

Every command and flag.

## Machine-readable docs

| URL | Use |
| --- | --- |
| https://triage.timmo.dev/llms.txt | Compact page index |
| https://triage.timmo.dev/llms-full.txt | Full docs bundle |
| https://triage.timmo.dev/mcp | Hosted MCP (search, page and navigation) |
| `/{route}.md` | One page as Markdown |
