This is the visible page for the Wave agent core — the small program the other Wave apps call when they need a reply. This console talks to the same core the other apps use, and it does not store anything itself. Nothing you type here is kept on this page; the only memory in the system is the core's, and you can wipe it below.
Opened inside the Muse app, this page lives at a different address than the core expects, so its live calls may be blocked there. The copy that can call the core directly is the Cloudflare one: wave-console.pages.dev. Everything on this page — the contract, the limits, how it works — reads the same in both places.
One tap asks the core a simple question — are you there, and which model are you running? — and shows its answer.
A contract is just the core's menu card: send these things, you'll get this back, here are the limits. Every Wave app reads the same card, so none of them has to guess. Below the plain words is the same card written in JSON — the tidy, labeled format computers read.
waveId (your Wave name, like test~console), your message (the line you typed, up to 500 characters), and your firstModel (the name of what you're modeling, optional, up to 200 characters). Anything else sent along is ignored — no to-dos, messages, emails, files, or location ever leave the device.reply in words, your waveId echoed back so you know it's yours, and live — true when the reply really came from the model.@cf/meta/llama-3.1-8b-instruct-fp8. It is one of many models in the world — not the same one as Muse or ChatGPT, just the same kind of thing: a pattern-reader for language.Who may call the core
Only these Wave pages are on the core's allow-list. Any other page that tries is turned away.
The same contract, as JSON
{
"name": "Wave agent core",
"role": "conductor",
"model": "@cf/meta/llama-3.1-8b-instruct-fp8",
"endpoints": {
"POST /agent": "Agent chat (alias of POST /voice, identical contract)",
"POST /voice": "Voice chat (original route)",
"DELETE /agent": "Wipe memory for one Wave ID (alias of DELETE /voice)",
"DELETE /voice": "Wipe memory for one Wave ID",
"GET /agent": "This contract",
"GET /health": "{ ok: true, model }"
},
"inputs": {
"waveId": "wave~form, e.g. andrew~walsh",
"message": "the typed line, max 500 chars",
"firstModel": "first model name, optional, max 200 chars"
},
"outputs": {
"reply": "string",
"waveId": "string",
"live": true
},
"boundary": "Only waveId, message and firstModel leave the device.",
"memory": "Last 6 exchanges stored under the Wave ID. Per-Wave-ID cap: 100 replies/day."
}
Type a line, send it to the core, and see exactly what went out and what came back. This is the same call Composer and the other apps make.
The test ID is test~console, a practice name that belongs to no one. Your real Wave ID is never filled in for you — use it only when you type it yourself, so test lines never land in your real memory.
What was sent
What came back
The core remembers the last 6 exchanges under a Wave ID. Wiping clears that ID's memory completely — the conversation starts fresh next time. It touches nothing else: not your profile, not any other ID.
This wipes the remembered exchanges for test~console from the core. It can't be undone — the memory is gone, not hidden.