Prove every word you publish is unmistakably yours.
Signify is the open-source writing platform that proves human authorship through keystroke verification. Publish with a shareable proof bundle that shows exactly how your story came to life—no AI, just you.
- Verified human authorship end-to-end with keystroke capture baked into every draft.
- Proof-ready publishing with a shareable bundle of drafts, replays, and session metadata in a single link.
- Public exploration with a library of verified essays and proof links.
- Live analytics that surface writing velocity, focus breaks, and correction patterns across your workspace.
- Built on modern Rails + React foundations so contributors can ship confidently and extend the platform quickly.
See the human fingerprint in every draft. Keystroke telemetry renders an immutable barcode of the writing session so reviewers can spot real authorship at a glance.
Ship every story with an integrity packet. Each shareable link includes the full draft timeline, verified session metadata, and replay evidence to prove authenticity.
Walk readers through every decision. Collaborators can scrub through the draft exactly as it unfolded—pauses, edits, corrections, and all.
Spot authenticity trends in real time. Aggregate keystroke evidence to understand writing velocity, focus breaks, and correction rhythms across your team.
Spin up your first verified session in minutes, or contribute code, docs, and ideas to make authorship verification stronger for everyone.
- Install dependencies and prepare the app:
bin/setup
- Launch the Rails + Vite development servers:
bin/dev
- Open
http://localhost:3000and start writing with proof.
The extension source is in extension/.
- Open
chrome://extensionsand enable Developer mode. - Click
Load unpackedand selectextension/. - Open the extension popup and set your server URL if needed.
- Click
Connect account, then use Signify in the X/Twitter composer.
See extension/README.md for release and privacy details.
- Ruby on Rails backend with Inertia.js transport
- Vite + React + TypeScript UI with shadcn/ui components
- Authentication foundation based on Authentication Zero
- Kamal deployment templates and optional SSR support
app/frontend/pages/home– marketing landing page and reusable messagingapp/frontend/pages/documents– keystroke-first writing experienceapp/services/keystroke_verification_service.rb– signing and verification pipelinedocs/– product requirements, APIs, and contributor notesDEPLOYMENT.md– production rollout guide (Hetzner + Kamal)
We welcome issues, pull requests, and feature proposals:
- Browse
todo.mdanddocs/prd.mdfor open problems and roadmap context. - Open an issue describing the change you’d like to make or pick up an existing one.
- Follow conventional GitHub etiquette (small PRs, clear descriptions, tests where it makes sense).
Join the conversation, share ideas, or showcase how you’re using Signify—every contribution helps keep human writing verifiable.
Server-side rendering is optional but ready to enable:
- In
app/frontend/entrypoints/inertia.ts, uncomment the SSR hydration block insetup. - In
config/deploy.yml, uncomment the SSR server, environment variables, andDockerfile-ssrbuilder.
Available under the MIT License.