Skip to content

Repository files navigation

CADENCE

CADENCE

Hermes Bot Mode TypeScript MIT public

One talent. Daily output. Double down on what beats the baseline.

Cadence is a virtual-talent operating system. It runs one original character — not a celebrity mashup — through a locked visual canon, a daily short-form queue, a format lab that freezes a testing baseline, and a fan desk that treats messages as the P&L.

The public case that inspired it went from $870 → $15.7k in 30 days. Sixty-eight percent of month two was messages, not the subscription. The pipeline was right. The asset and the store were not. Cadence keeps the pipeline and replaces both.

CADENCE — One talent. Daily output.


The loop

CANON  →  QUEUE  →  LAB  →  VARY  →  DOOR  →  DESK
 face      2–3/day   1.8×     one      sub     messages
 voice     start     locked   variable is the  + banked
 rules     frame     baseline per take  door    drops
  1. Canon — lock identity before you chase outfits. Original IP only.
  2. Queue — two or three shorts a day. Start frame, then motion, then caption. Never ask a video model to invent the face.
  3. Lab — the first ten posted takes freeze the baseline. Winners do not get to raise the bar.
  4. Vary — change one variable. Keep the hook structure. Ship the outlier, not a new girl.
  5. Door — the profile converts. Membership opens the relationship.
  6. Desk — reply the same day. Attach a banked drop. Messages should out-earn the sub.

Full argument: docs/PLAYBOOK.md. Operating manual: docs/OPERATING.md. Internals: docs/ARCHITECTURE.md.


What's in the desk

Surface Route Job
Desk / Revenue mix, locked baseline, today's three slots, outlier ranking, editor brief
Canon /canon Face, voice, visual law, do / don't
Lab /lab Formats vs the frozen baseline. Vary winners. Copy start-frame + motion prompts
Queue /pipeline Build a take, draft captions, log views against the bar
Fans /fans Threads, LTV, banked drops. Draft replies in-character
Playbook /playbook Why this exists

Seeded talent is Juno Park (@juno.park) — 26, Manchester / Seoul, analog photographer, Contax T2, charcoal coat, cream turtleneck. Original face. Documentary iPhone language. No glamour grade.

Demo books:

July (test) August (system)
Messages $540 $9,620
Memberships $280 $2,890
Tips $100 $1,240
Prints $460
Total $920 $14,210

August messages are 68% of the month. That is the number the original thread got right.


Locked baseline

Cadence does not use a trailing average. Trailing averages hide winners once you start repeating them.

  • Take the first 10 posted pieces. That window is the test.
  • Baseline = median views of that window.
  • A format is an outlier at ≥ 1.8× that median, quiet below 0.7×, otherwise baseline.
  • Status needs at least two posted takes; a single result stays testing.

Juno's seeded bar is 10.4k. Load film sits at 6.8×. Walk-in at 4.5×. Window seat is quiet. The lab will tell you to stop inventing premises and ship film variations.

Implementation: src/lib/stats.ts.


In-house editor

Four user-initiated calls to Grok (grok-4.5) via XAI_API_KEY. Nothing runs on page load. Caps at 700 tokens.

Action Where Returns
Brief me Desk Four bullets: double down, stop, drop to push, today's order
Vary this Lab One-variable format (prompts + hook + caption)
Draft captions Queue Three captions in Juno's voice
Draft reply Fans One DM, drop attached only if it fits

The editor is instructed to stay SFW, never sexualise, never copy celebrity faces, and never rebuild the identity. If the key is missing, the buttons say so instead of mocking a reply.


Stack

  • React 19 + TanStack Start / Router
  • Tailwind v4
  • Zustand + localStorage (cadence-v1) — no auth, no database
  • xAI Chat Completions for the editor (server function only)
  • Vite 8, Nitro (Vercel preset)

State lives in the browser on purpose. This is a single-operator studio, not a multi-tenant SaaS. Reset from Canon → Restore demo.


Run it

Requires Node 22.

git clone https://github.com/anwhelan01/cadence.git
cd cadence
npm install
cp .env.example .env     # optional — editor features need XAI_API_KEY
npm run dev

App binds 0.0.0.0:8080.

npm run typecheck
npm run build

XAI_API_KEY is server-only. Do not prefix it with VITE_.


Repo map

src/
  routes/           Desk, Canon, Lab, Queue, Fans, Playbook
  components/       App shell + UI primitives
  lib/
    seed.ts         Juno Park, formats, posts, fans, drops, months
    stats.ts        Locked baseline + outlier ranking
    store.ts        Zustand persist
    ai.ts           Editor server function
    canon.ts        Identity block passed into every prompt
public/talent/      Master, PFP, feed, and 9:16 start frames
docs/               Playbook, operating manual, architecture

What we refused to copy

  • Celebrity face references. Juno is original IP.
  • A paid-nude factory. Direct fan revenue here is prints, essays, voice notes, locked sets.
  • Vibes-based “this one did well.” The lab uses a frozen testing baseline.
  • An empty wall. Drops are banked on the fan desk before the queue is full.

License

MIT. See LICENSE.


Hermes Bot Mode

This desk is a named Hermes Bot — own model slot, memory, skills, routines, and @mentions.

# once
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

# this repo
./scripts/install-hermes-bot.sh
hermes -p cadence chat

In Hermes Desktop the Bot lands under Bots. Type @cadence from any chat; group it with the rest of the k3ss roster (studio).

File Role
AGENTS.md Project harness Hermes loads at session start
.hermes/SOUL.md Bot personality
.hermes/bot.yaml Roster, skills, groups
.hermes/skills/cadence/SKILL.md Portable skill

Docs: Bot Mode · Context files · Skills

About

PARK — virtual talent OS. Creator job, not set-and-forget. Reputation risk.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages