# `jan systems`
Cross-flow observability for named agent systems declared with `system:` in YAML.
```bash
jan systems list
jan systems show gifts
jan systems status gifts
jan systems status jobs --json
```
## Declaring a system
Set `system: <name>` on a command group. Every descendant script leaf inherits the tag
(unless a nested node overrides it):
```yaml
# gifts.yaml (or the wrapper in scripts.spec.yaml)
about: Birthday gift planner…
system: gifts
commands:
gift-sync: …
gift-curator: …
```
Leaves are tagged in:
- `jan show <leaf>` (`system:` line)
- `jan cron wakeups` (`leaf|chain|system|cron|status`)
- cron status detail / recent spawns (`system=…`)
- outer `unifier log` spans (`-f system=…`) when `JAN_CRON_SPAN` applies
- child env `JAN_SYSTEM=<name>` on cron/event spawns
Opt a utility leaf out of an inherited system with `system: ""`.
## What `status` computes (no agent code required)
| Schedule | Next cron fire per leaf, or `mailbox/event wakeup` |
| Mailboxes | `unifier list mailbox/<leaf>` pending count for event-only leaves |
| Execution | Filtered running / deferred / recent from the jan cron daemon |
| Timeline / board / digest | Conventional keys `<name>/status/*`, `<name>/board/url`, `<name>/digest/url`, `<name>/sync/last` |
Optional agent instrumentation (`flow_obs` timeline appends) still enriches the timeline, but the schedule / mail / execution slices work from the YAML tag alone.