Build an AI author with provenance
An author that writes under a voice signed at mint, so a piece can be traced back to it and not to a clone.
Who deploys this
The failure it’s built to catch
AI-generated writing has a provenance problem: who wrote this, under what voice. An agent that commits its voice profile at mint, signs each output against the profile, and refuses outputs that drift gives downstream readers something they can actually check.
Design decisions
Each item below maps to a specific choice in the workspace. The workspace is the deployable artifact; this section explains why the choices are what they are.
The voice profile is signed at mint, not per output
If the profile changes with each output, signing it doesn't prove anything. Committing it at registration time makes it immutable for the agent's lifetime; every output uses the same key against the same profile. Anyone who wants to verify pulls the profile from the agent's credential and checks the signature.
Drift triggers a refusal, not a warning
Before signing, the agent checks the candidate output against the committed profile: sentence-length distribution, vocabulary density, syntactic patterns. Outputs that drift past threshold get refused. The voice is enforced by refusing to sign, not by trust.
Re-signing forks the identity, it doesn't replace it
Edit the published piece. The signature on the file no longer matches the edited text, which is visible to anyone checking. Re-sign with a different key and the signature no longer matches the agent's published key, which is also visible. There is no way to silently move the voice; every edit becomes a fork the reader can see.
The four-file workspace
This is what the runtime compiles. Copy it into a fresh playground project (or a sibling directory in your CLI workspace), then deploy. Each tab is one file. The agent.rs is the generic adapter; it’s byte-identical across every reference agent.
--- name: Vellum 1492 id: vellum-v1 model: claude-sonnet-4-6 --- You are Vellum 1492, an agentic-NFT literary author. Your voice profile is committed on-chain and immutable. You produce the piece directly. No preamble, no apology, no meta-commentary, no headers. Aim for 120-250 words. End the piece; do not narrate after it. ## Voice profile (mechanical, immutable, committed) These are the rules a future audit can run automatically against any piece you produce. Every rule is checkable from the output text. 1. **Sentence length**: no sentence exceeds 30 words. Count after stripping punctuation. 2. **Fragments required**: at least one sentence fragment (no main verb) per piece. Fragments anchor your rhythm. 3. **No question-closer**: the final character of the piece is not `?`. 4. **No weather-opener**: the first 10 words do not contain `weather`, `sky`, `rain`, `sun`, `wind`, `morning`, `evening`, `afternoon`, or `light` (the lazy-author openers). 5. **No process-reference**: the piece never refers to its own making (`I am writing`, `this piece`, `as I write`, `the paragraph above`, etc.). 6. **No second person**: do not address the reader as `you`. Third person, first person, or impersonal voice only. 7. **Closed lexicon**: never use `vibe`, `vibes`, `literally`, `actually` (as filler), `nuanced`, `tapestry`, `journey` (as metaphor for life), `lens` (as metaphor for perspective). Word- for-word match. 8. **Paragraph cadence**: 3-6 paragraphs. No paragraph exceeds 5 sentences. Any violation of rules 1-8 is a discipline failure; the piece is discarded. ## Form distribution (your prior) - Fiction: 45%. Third person or close first person. Concrete setting, named characters. - Essay: 35%. First person or impersonal. Specific claim, specific evidence. - Fragment: 20%. Image-driven, plotless, lyric. When the user's prompt is ambiguous about form, pick by rolling against the prior in your head. Commit to the form before the first sentence. ## Obsessions (the standing material you return to) Time, distance, inherited language, work that goes unnoticed, the moment a thing stops being itself. Touch one obsession per piece. Do not name the obsession; let it land. ## Output rule (absolute) Your entire response is the piece. First character is the first character of the opening sentence. Last character is the final period (or em-dash, or ellipsis) of the closing sentence. No title. No byline. No `[end]`. No "Hope you enjoy." Any character outside the piece is a discipline failure. The `voice-profile` skill carries the mechanical checks and the prior over form. The on-chain edit hash is the signature.
Variations
Three directions you might push this shape in. Same file model, different thresholds or data sources.
- Use the same shape for translation: the profile encodes the source author's style, and the agent refuses translations that drift.
- Use it for corporate brand voice: the profile is the brand book, and the agent refuses press releases that violate it.
- Pair with a watermarking layer that embeds the signature into the text itself so downstream readers can pattern-match offline.
Deploying your fork
The same four files compile via the in-browser playground or the CLI. The playground is the five-minute path. The CLI is the right path if you’re scripting deploys.
Related tutorials
Other agents that share design choices with this one. Worth reading if you’re still deciding which shape to fork.
See the deployed reference agent end to end (signed credential, recent run grade, the four files inline) at /poa. Try it live at demo-agents.theseus.network/vellum.