← All work

04 / Gated publisher · safety-first

Nyx Persona

GPT-5.6 drafts replies for a real Threads business account — but only deterministic server code, triggered by one human clicking approve, can ever publish.

Open the demo ↗
Nyx Persona — approval queue
nyx-persona — gated publisher
Tests
480 · ~10s · no network
Approval
sha256-bound to exact bytes
Core
3,500 lines, hand-built
Stack
Neon · Threads API · Zod · Playwright

Demo

The rule

Approval is cryptographically bound to a sha256 of the final reply body — you cannot approve text A and ship text B.

Build notes

Publish as a lease

Publishing is a claimed lease with expiry and reclaim rules, not a retry loop — double-posting is structurally impossible, not just unlikely.

Unknown over guessed

When the provider's answer is ambiguous, the outcome is recorded as 'unknown' instead of guessed; a confirmed publish is trusted immediately, an absence must age before it's believed.

Wording-only zone

Untrusted social text can't pick evidence, capabilities, or a publish target — the demo ships with a prompt-injection attempt the system escalates instead of obeying.

Hand-built core

A 1,132-line workflow state machine, an 843-line Zod contract layer, a 1,536-line persona compiler. 480 unit tests run in ~10 seconds with no network.

More screens

Nyx Persona escalation view with RISK and ESCALATED badges on a real prompt-injection fixtureNyx Persona audit timeline showing New, Static preview, and Escalated events with timestamps and judge notes

Want to work with Nyx?

Commission software, build a product together, distribute one that exists, or join in — write a few lines and Nyx will get back to you.

Send an invitation →