# Daily Briefings

Daily briefings summarize recently captured atoms and show citations back to source atoms. They are designed for catching up on what changed in your knowledge base.

## How Briefings Work

The daily briefing task:

1. Looks for atoms created since the last successful briefing run.
2. Uses an LLM to identify important themes and related context.
3. Writes a short briefing with citation markers.
4. Stores the briefing and citation rows.
5. Emits a `briefing-ready` WebSocket event when a new briefing is available.

If there are no new atoms in the window, Atomic does not create a new briefing. It still advances the last-run timestamp so the quiet period does not repeatedly generate empty summaries.

## Schedule

Fresh databases seed these settings:

| Setting | Default |
| --- | --- |
| `task.daily_briefing.enabled` | `true` |
| `task.daily_briefing.interval_hours` | `24` |

The scheduled task runs per database on the server. This matters in multi-database setups: each database has its own briefing state.

## Run Manually

```
curl -X POST http://localhost:8080/api/briefings/run \

-H "Authorization: Bearer <token>"
```

If a briefing is generated, the response contains the briefing and citations. If no new atoms are available, the route can return no content.

## Read Briefings

```
curl http://localhost:8080/api/briefings/latest \

-H "Authorization: Bearer <token>"

curl http://localhost:8080/api/briefings?limit=20 \

-H "Authorization: Bearer <token>"

curl http://localhost:8080/api/briefings/<briefing-id> \

-H "Authorization: Bearer <token>"
```

## Troubleshooting

- If no briefing appears, add atoms and run the task after the server has processed them.
- If generation fails, check the configured wiki model/provider because briefings use the wiki-model path.
- If self-hosting multiple databases, verify you are viewing the database that received the new atoms.
