Sashité for Developers
  1. Sashité for Developers
  2. Nostr

Sashité on Nostr

A complete, open protocol for playing turn-based abstract strategy board games of the chess family over Nostr: every act of a game — the challenge, the pairing, each move, the verdict, the rating, even a composed puzzle — is a signed, public, relay-distributed event. No proprietary server holds the game: any client can replay a session from public events alone, verify every signature and every rule the protocol fixes, and reach the same board, the same clocks, and the same result.

Why a protocol, not a platform

Building play on Nostr buys three properties no account system offers:

The suite at a glance

The suite is specified as a family of NIPs — written standalone and deployment-neutral, the way upstream NIPs are. Thirteen suite kinds cover the session lifecycle: challenges and matchmaking, the game session, plies, adjudication, rematches, challenge policies, moods, and composed puzzles with their validations. Five generic NIPs define the timing and rating primitives the suite consumes — usable by any Nostr application that needs a trustworthy timestamp or a signed rating, and candidates for upstream submission.

Where to start depends on what you are building:

Verifiable timing

A turn-based game is a fight about when at least as much as about what: a move’s timestamp decides races, clocks, and timeouts, yet a Nostr event’s created_at is a self-claim. The suite’s timing foundation — the Canonical Timing NIP — makes it trustworthy in one of exactly two ways, designated in-band at the founding of every session: a timestamper whose signed Event Timestamp Attestations carry the authoritative timing (attested mode), or one or more designated timing relays — relays conforming to the Self-Timed Timing Relay profile, whose strict created_at ingestion window makes each accepted event’s own timestamp non-backdatable (self-timed mode, the default).

Reference deployment

Sashité operates the reference deployment — Sanki, where chess, ōgi, and xiongqi are played on one board, across variants — with open-source reference implementations of every role the protocol names: client, arbiter, matchmaker, rater and timestamper bots, and the timing-relay policy. The NIPs themselves are deployment-neutral; Sashité appears in them only as the reference deployment.

Source of truth, and where to discuss

The canonical source of the NIPs is the public sashite/nostr repository — one standalone markdown document per NIP under nips/, following the layout of nostr-protocol/nips, beside the machine-readable registry of kinds, markers, and shared constants. Issues and pull requests are the place to discuss these specifications. The pages under /nostr/nips/ are generated from that repository and never edited by hand.

Authored by Cyril Kato (Sashité). The NIPs are public domain, like the Nostr NIPs themselves. (The rest of sashite.dev’s specifications remain under the Open Web Foundation Agreement 1.0.)