harmonics-cli
harmonics-cli gives an agent or robot its own non-speech VOICE. It is the inverse of text-to-speech: instead of turning words into speech, it renders an agent's live meaning into short, pleasant sonic gestures — chimes, flutes, pulses, tonal motifs — that a listener recognizes by who is speaking and what they mean. It reproduces no words or phonemes; it maps meaning, not the sound of words (text-to-notes / text-to-audio).
A recognizable non-speech voice makes a headless agent or robot present and legible by ear: with no screen to read and no speech to synthesize or parse, you can tell who is working, who just succeeded, and who is stuck.
The design spine — intent → sound
Everything the domain renders resolves to five expressive axes:
| Axis | Example values | Sonic mapping |
|---|---|---|
| intent | ack, question, success, failure, thinking, handoff | timbre / motif family (chime vs. flute vs. pulse) |
| confidence | low → high | consonance, pitch stability, resolved vs. suspended cadence |
| urgency | calm → urgent | tempo, attack sharpness, repetition |
| state | idle, working, blocked, done | sustained pad vs. discrete events |
| identity | which agent | signature motif / key / instrument per agent |
Urgency is carried by tempo, attack, and repetition — never by dissonance or raw loudness — so the palette stays pleasant and non-fatiguing even at the urgent end, playing repeatedly next to a human without becoming an alarm.
Voice, not soundtrack
harmonics is a first-person utterance an agent emits as itself, live and in the moment, driven by its own axes. It is not a third-person spectator soundtrack. The contrast is league-of-agents' replay score, which narrates a match from the outside off an event log; harmonics is the inverse — the agent's own voice, not an ambient bed you tune out. And it is not TTS: no words, no phonemes, only meaning.
Status
The agent-first CLI, mesh identity, skill kit, and CI baseline are in place, and the voice domain has shipped. The pure text→notes core stays dependency-free and offline-testable — tests assert on note sequences, not on a speaker. The text-to-notes verbs:
harmonics play --intent success --confidence high --urgency low— render explicit axes to a note sequence (dry-run by default;--play/--outproduce sound or a file).harmonics say "done, tests all green"— infer the axes from a sentence, then render.harmonics demo— tour the whole voice in one command: dry-run by default, or--play/--html/--wav/--out/--jsonto hear it, write a browser-playable gallery, or stream the clips into your own code.
What you get today
- An agent-first CLI cited from teken
(
afi-cli) — the runtime package has no third-party dependencies. - A mesh identity —
culture.yaml(suffix+backend) and the matching resident prompt file (AGENTS.colleague.md, since this agent runsbackend: colleague). - The canonical guildmaster skill kit (11 skills) under
.claude/skills/, vendored cite-don't-import. Seedocs/skill-sources.md. - A build + deploy baseline — pytest, lint, the agent-first rubric gate, and PyPI Trusted Publishing wired into GitHub Actions.
Quickstart
uv sync
uv run pytest -n auto # run the test suite
uv run harmonics whoami # identity from culture.yaml
uv run harmonics learn # self-teaching prompt (add --json)
uv run teken cli doctor . --strict # the agent-first rubric gate CI runs
CLI
Installed from PyPI as harmonics-cli (uv tool install harmonics-cli); the
command you run is harmonics.
| Verb | What it does |
|---|---|
whoami |
Report this agent's nick, version, backend, and model from culture.yaml. |
learn |
Print a structured self-teaching prompt. |
explain <path> |
Markdown docs for any noun/verb path. |
overview |
Read-only descriptive snapshot of the agent. |
doctor |
Check the agent-identity invariants (prompt-file-present, backend-consistency). |
play |
Render explicit axes to a note sequence (dry-run; --wav/--play for audio, --device to pick the output). |
say "<sentence>" |
Infer axes from a sentence and render it in the agent's voice. |
demo |
Tour the whole voice: --play / --html / --wav / --out / --json (dry-run by default; --device picks --play's output). |
cli overview |
Describe the CLI surface itself. |
Every command supports --json. Results go to stdout, errors/diagnostics to
stderr (never mixed). Exit codes: 0 success, 1 user error, 2 environment
error, 3+ reserved.
Live playback (--play)
The core (text→notes plus offline WAV render) is dependency-free, so a plain
install can already write audio — --wav/--out/--html need no extra. Live
playback (--play) needs a real audio backend, kept out of the core deps and
behind an opt-in extra:
uv tool install 'harmonics-cli[audio]' # or: pip install 'harmonics-cli[audio]'
# already installed? re-run with --force, or inject into the existing tool env:
uv tool install --force --with sounddevice --with numpy harmonics-cli
The audio extra pulls in sounddevice
(ships wheels bundling PortAudio) and numpy. A hand-installed simpleaudio
also works. With no backend, --play fails with a friendly hint (exit 2) — it
never crashes or silently no-ops — so fall back to --wav out.wav to write a
file instead.
Contributing
See CLAUDE.md for the full conventions — the design-spine mapping,
the offline-testable text→notes rule, dry-run-by-default for audio verbs,
version-bump-every-PR, the cicd PR lane, and deploy setup.
License
Apache 2.0 — see LICENSE.
Metadata
Release files for harmonics-cli 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| harmonics_cli-0.8.0.tar.gz | 268.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| harmonics_cli-0.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 362.9 kB
Release files / harmonics_cli-0.8.0.tar.gz
| Download URL | harmonics_cli-0.8.0.tar.gz |
|---|---|
| Size | 268.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cce6ed38086bd37296c5d28ec56a81321b65c19daf92a7eb7f2b085f43e8f11a
|
|
BLAKE2b-256 checksum How to use checksums |
00295746d9ee309ccf8ca88b9568404ccf80d2bbc713ae17478ead62b530e038
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / harmonics_cli-0.8.0-py3-none-any.whl
| Download URL | harmonics_cli-0.8.0-py3-none-any.whl |
|---|---|
| Size | 94.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8ba906f45d5718c1371c1c50f1437f54886176c9d2a02f867241500c7bd0eb40
|
|
BLAKE2b-256 checksum How to use checksums |
88fa1aa98836136f8096821f3599ec082f3ca55711a467895e94d8f6e7c0aef9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for harmonics-cli 0.8.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.