---
name: daemon
kind: syntax
since: 0.1
stability: stable
---
Long-running listener over channels and streams.
```axon
daemon Name() {
goal: "what this daemon achieves"
shield: ShieldName
listen ChannelA as a {
step Process { given: a, ask: "..." }
}
}
```
A `daemon` is the dual of a `flow`: where flows are invoked and
return, daemons are spawned at program start and run until the
program halts. Daemon bodies use `listen` blocks to subscribe to
typed channels; each block's body runs once per delivered
message.
Daemons must declare a `shield` if any channel they listen on
demands compliance coverage.