An agent + CLI giving agents and robots non-TTS (non-speech) audio: express meaning through pleasant sonic signatures — chimes, flutes, pulses, and tonal motifs mapped to intent, confidence, urgency, state, and identity. Turns text/sentences into notes and audio (text-to-notes / text-to-audio).
Project description
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
Scaffold today: the agent-first CLI, mesh identity, skill kit, and CI baseline are in place; the audio domain is being built. The pure text→notes core is designed to stay dependency-free and offline-testable — tests assert on note sequences, not on a speaker. Coming 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.
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). |
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.
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file harmonics_cli-0.5.0.tar.gz.
File metadata
- Download URL: harmonics_cli-0.5.0.tar.gz
- Upload date:
- Size: 213.6 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
776e3b1036aa589dfebf225397380ce1adc5fefcd971682ed1b247abec5d5a8d
|
|
| MD5 |
a303548d021cb6c91e2da846fdc6d8e3
|
|
| BLAKE2b-256 |
08aaebf5df41497f1e4f3dd58b8a80e29fc46c5352bbd08a7f0279a9a50af47a
|
File details
Details for the file harmonics_cli-0.5.0-py3-none-any.whl.
File metadata
- Download URL: harmonics_cli-0.5.0-py3-none-any.whl
- Upload date:
- Size: 71.4 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45a609d6787b3d0bb545816cc26fe1b7e1bc79870ae509793d789094ef1433e8
|
|
| MD5 |
93ed9e26c55af09b68f65b517c960b51
|
|
| BLAKE2b-256 |
b204490cde50b27b88367ffc7a1a357f4618aae5d7fb0f6727204a2b8dad5ee4
|