Patina AI Agent
AI-writing humanizer for KO/EN/ZH/JA
Patina is an open-source ai agent by devswha, written mainly in JavaScript, with 382 GitHub stars and the MIT license. Its code was last updated Sep 29, 2026. The latest npm release is patina-cli 9.1.0, published Sep 26, 2026, with 581 downloads last week.
An illustrative email edit
Before
I'm writing to let you know that the launch review is scheduled for Friday at 2 p.m. The draft is 6 pages long, and two questions about pricing are still open.
After
The launch review is Friday at 2 p.m. The draft has 6 pages and two open pricing questions.
A curated excerpt from the English email showcase. This is a synthetic example, not a live run or a measured score.
patina is a deterministic, pattern-based humanizer for Korean, English, Chinese, and Japanese. It finds AI-sounding phrasing and rewrites it without changing the claim, numbers, polarity, or causation — built for allowed AI-assisted drafting, not for evading detectors.
- Auditable, not a black box — 189 named patterns drive every edit;
--diffshows exactly what changed and why. - Meaning verified on the web — web gates each rewrite with MPS/fidelity floors, rejecting drift; CLI
--verifyand/patina --strictadd checks. - Three independent axes — Document Type owns genre, Persona owns voice, Register owns delivery. Omit any axis to preserve the source.
- Every surface — agent skill (Claude Code · Codex · Cursor · OpenCode), Node CLI, and a browser playground.
- Honest about limits — scores are editing signals, not authorship proof; our own pre-registered study publishes where rewriting fails alongside where it works.
Quick Start
Version: 9.1.0. npm publication is a separate, explicitly authorized step. See release channels.
Browser — nothing to install. Open patina.vibetip.help and paste text. Rewrites run server-side with the MPS/fidelity gates; API mode forwards your own key per request (never stored or logged).
Agent skill — paste this into Claude Code, Codex CLI, Cursor, or any agent:
Install patina by following https://raw.githubusercontent.com/devswha/patina/main/INSTALLATION.md
Agent skill — already using the skills.sh CLI: npx skills add devswha/patina (installs the whole checkout for 75+ agents; entries on skills.sh come from install telemetry — no listing to submit). patina is a meaning-preserving editor (MPS-verified; KO·EN·ZH·JA), not a detector bypass.
Then use it:
/patina --lang en
[paste your text here]
CLI — Node >= 18:
npx patina-cli --lang en input.txt # rewrite
npx patina-cli doctor # check backends and keys
A logged-in codex, claude, or gemini CLI works with no API key: add --backend codex-cli. Full install options: INSTALLATION.md.
Three Independent Axes
patina does not infer one axis from another. Omit Persona and Register to keep the source voice and register.
| Axis | Controls | Does not control | Select with |
|---|---|---|---|
| Document Type | Genre, purpose, structural conventions, pattern policy | Voice, casual/professional delivery, meaning floors | --document-type · config document-type · Playground "Document Type" |
| Persona | Reusable voice fingerprint: vocabulary, rhythm, explanation habits | Genre, pattern policy, register, meaning floors | --persona · config persona · Playground "Persona" |
| Register | casual or professional delivery | Genre, persona identity, pattern policy | --register · config register · Playground "Register" |
Meaning preservation is the outer guard; an explicit value never fills an omitted axis.
Commands
patina input.txt # rewrite with defaults
patina --audit input.txt # detect patterns only
patina --score --offline --exit-on 30 input.txt # deterministic CI gate, no API key
patina --diff input.txt # pattern-by-pattern changes
patina --verify input.txt # rewrite + MPS/fidelity floor check
patina --document-type email --register professional input.txt
patina persona new my-voice --from-sample past-posts.txt # learn a reusable voice
patina --persona my-voice draft.md
patina --batch docs/*.md --outdir cleaned/
patina --help prints the full flag list. CI wrapper for GitHub Actions: devswha/patina-action — plus pre-commit, Docker, and release guides.
Editor clients: the VS Code, Obsidian and Gmail preview clients are retired. See the historical record.
Model evidence: writing/scoring guide (Korean), rewrite confirmation, and live scoring diagnostics.
Project config lives in .patina.yaml:
version: "9.1.0"
language: ko # ko | en | zh | ja
document-type: default # genre/purpose + pattern policy
persona: # optional reusable voice; omit to preserve source
register: # casual | professional; omit to preserve source
Facts
| 189 patterns | 41 rewrite-capable (KO) / 38 (EN) / 37 (ZH, JA) + 9 score-only viral-hook per language — see the full 189-pattern catalog in PATTERNS.md |
| Modes | rewrite · verify · audit · score · diff |
| Calibration | 67.3% editing-hotspot catch [63.5–71.0%] across GPT-5.5 / Claude Sonnet 4.6 / Gemini 2.5 Pro (n=600, KO+EN); 16.0% false positives [11.6–21.7%] on KO+EN human controls (n=200) |
| License | MIT |
Scores are editing signals with false positives and false negatives, not proof of authorship. See Ethics.
Documentation
Historical English playground recording · recording context. The recording is an earlier run, separate from the curated examples above.
- Cookbook — common recipes · CLI contract — flags, gates, exit codes
- Before/After gallery (한국어) · Pattern catalog
- Architecture · Configuration & authentication
- Benchmarks · Research · FAQ (한국어)
- Contributing (한국어) · Changelog
To submit a pattern, use CONTRIBUTING.md. Open a pattern proposal (.github/ISSUE_TEMPLATE/pattern_proposal.yml), then add the pack from the template in patterns/{lang}-*.md. See pattern of the week for one worked pair.
License
MIT. See LICENSE and NOTICE. Inspired by oh-my-zsh, Wikipedia's "Signs of AI writing", and blader/humanizer.
Patina alternatives
View more →Similar ai agents in Content & Writing, ranked by GitHub stars. Compare licence, recent activity and scan status before you choose.
| Name | Stars | Licence | Last updated | Scan |
|---|---|---|---|---|
| Patina (this page) devswha | 382 | MIT | Sep 29, 2026 | Scanned, no flagged issues |
| Siyuan siyuan-note | 47k | AGPL-3.0 | Nov 1, 2026 | Scanned, no flagged issues |
| Oh Story Claudecode zenstory-ai | 8.2k | MIT | Nov 1, 2026 | Scanned, no flagged issues |
| Readme AI eli64s | 3k | MIT | Oct 28, 2026 | Scanned, no flagged issues |
| LocalMiniDrama xuanyustudio | 2.3k | MIT | Oct 30, 2026 | Scanned, no flagged issues |
| Openclaw Docs yeuxuan | 752 | None found | Oct 8, 2026 | Not scanned yet |