Skip to content

Repository files navigation

hyphos

hyphos — a pen nib tracing a personal signature waveform, the shape of one writer's voice

npm version CI MIT license

ύφος — Greek for the style and tone of one's expression.

Rewrite any AI draft so it reads as written by you. hyphos builds register-aware voice profiles from your own writing — chat transcripts, exports, posts — preserves your quirk-level habits with enforcement rules a model can't drift away from, and scores every output for how much it actually sounds like you.

This is the Node/TypeScript implementation, distributed on npm and runnable with npx. The tool began life as a Python pipeline and was ported to TypeScript with stage-by-stage output verification at cutover; the porting harness was removed once the port was proven.

Status: working end to end, with named rough edges. The corpus pipeline — extraction, curation, register tagging, chat/email ingest, stylometric fingerprints — and the output side both run today: rewrite (a model pass over your own claude CLI or Anthropic API credentials, then the deterministic enforcement pass), score (the model-free fidelity v1, plus the model-judged half via score --judge), blind self-tests, and the local web app (serve). Still open: score calibration, fingerprint refinements (sentence splitting, email quote-fragment cleanup, per-register typo rate), and the --typos natural rewrite mode — see the roadmap.

What it does

  • Voice profiles, per register — you don't have one voice; you have modes (technical, informal, editorial). hyphos profiles each: a stylometric fingerprint (sentence lengths, punctuation habits, openers, rhythm) plus a distilled style guide with your quirks and anti-patterns.
  • Rewrite — feed it any AI-generated draft and a target register; it rewrites the draft in your voice.
  • Hard quirk enforcement — mechanical habits (punctuation policy, banned words, casing) are applied after the model as deterministic rules, because models normalize personal quirks away and drift from style instructions as context grows.
  • A fidelity score — every output gets a "how-much-like-you" number (stylometric match plus a judge rubric), calibrated by blind self-tests.

Quick start

npx hyphos extract            # extract your own messages from local transcripts
npx hyphos fingerprint        # compute stylometric fingerprints per register
npx hyphos rules --test       # self-test the deterministic enforcement rules

Corpus output lands in corpus/ and profiles in profiles/ under the package root (resolved from the CLI's own location, so commands work from any directory); point HYPHOS_HOME at another location to relocate both, or HYPHOS_CORPUS / HYPHOS_PROFILES to override one. Stdout prints aggregate numbers only — never your text — so it is safe to share.

Non-English writing

Writing in another language (including Greeklish — Greek written in Latin characters) contributes rhythm, register and punctuation habits, tagged as such. It is never mined for word choice and never transliterated.

Privacy by design

Your corpus and profiles never leave your machine: corpus/ and profiles/ are gitignored, nothing is transmitted anywhere, and model calls (for the rewrite stage) use your own credentials.

Development

npm install
npm test          # unit tests
npm run build     # bundle to dist/ (the published CLI)

Roadmap: ROADMAP.md · Decisions: DECISIONS.md

License

MIT

About

Rewrite AI drafts in your own voice — register-aware style profiles from your writing, with a fidelity score

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages