---
id: annot-server
name: @Server
category: annotations
kind: annotation
tokens: @Server
sig: @Server handler Name { … }
tip: Run a handler only on the authority; clients receive the result via @Sync.
order: 50
---
@Server marks a handler as server-authoritative: it runs only on the peer acting as the authority, and clients receive its effects through ordinary @Sync replication rather than by running the handler themselves. This is the declarative alternative to sprinkling is_server() branches through gameplay code — the role is a property of the handler, so every line's placement stays legible. Unmarked handlers are the shared, deterministic simulation that runs everywhere; use @Server for decisions that must have a single source of truth, like awarding score, resolving damage, or spawning authoritative entities. Offline the role register defaults to server, so the guard collapses to "run here" and a single-player build is unchanged.
```ludic
program AuthoritativeScore {
property Score { total: int = 0 }
model Scoreboard { Score }
handler Tick phase Update { # unmarked -> runs on every peer
for (Score) in query [Score] { Score.total = Score.total + 1 }
}
@Server handler AwardBonus phase Update { # authority only
for (Score) in query [Score] { Score.total = Score.total + 100 }
}
handler SpawnScoreboard phase Start {
spawn Scoreboard { Score { total: 0 } }
}
}
```