Motivation
device.type describes hardware (ios, android, car). But a walkie-talkie runs on iOS — the platform says nothing about the interaction mode. Voice-only clients need different responses than display clients, regardless of OS.
Proposal: yodel.purpose + yodel.purpose_override
Two new optional fields in the Yodel block:
purpose — selects the base profile
{
"yodel": {
"purpose": "walkie-talkie",
"device": {
"type": "ios"
}
}
}
The gateway uses purpose to load a base system prompt from the prompts repository (openyodel/prompts). It describes the fundamental interaction mode.
purpose_override — refines the profile (optional)
{
"yodel": {
"purpose": "walkie-talkie",
"purpose_override": "Sprich wie ein Offizier. Kurze Befehle."
}
}
Appended to the base prompt. Allows the client (or end user) to customize behavior without replacing the whole system prompt. Free-form string, not an enum — supports combinations and nuance that a tag system can't capture.
Gateway behavior
- Load base prompt from
openyodel/prompts using purpose as key
- If
purpose_override is set → append it
- If
purpose is absent → neutral default
- If
purpose_override is set without purpose → append to neutral default
Proposed purpose values
| purpose |
Typical Device |
Response Style |
walkie-talkie |
PTT handset, radio app |
Spoken, no markdown, quick exchanges |
dashboard |
Car display |
Glanceable, max 1 sentence |
big-screen |
Stadium LED, billboard |
Large, high contrast |
smartwatch |
Watch |
Ultra-short, notification style |
tv |
Television, Apple TV |
Readable from 3m |
terminal |
CLI, desktop agent |
Markdown, code, full scope |
chat |
Messenger, chat app |
Hybrid: short answers, markdown ok |
dictation |
Voice recorder |
Formal, punctuated, full sentences |
kiosk |
Info terminal |
Structured, button-friendly |
speaker |
Smart speaker |
Spoken, longer than walkie-talkie |
headset |
Headphones, earbuds |
Spoken, intimate, short |
Distinction from device.type
device.type = hardware platform (audio codecs, capabilities)
purpose = why is the user talking to the agent?
purpose_override = how should the agent adapt?
- All three complement each other
Open questions
- Should
purpose be required or optional? (Proposal: optional)
- Valid values: open registry or spec-defined enum? (Proposal: spec-defined with extensibility path)
References
Motivation
device.typedescribes hardware (ios,android,car). But a walkie-talkie runs on iOS — the platform says nothing about the interaction mode. Voice-only clients need different responses than display clients, regardless of OS.Proposal:
yodel.purpose+yodel.purpose_overrideTwo new optional fields in the Yodel block:
purpose— selects the base profile{ "yodel": { "purpose": "walkie-talkie", "device": { "type": "ios" } } }The gateway uses
purposeto load a base system prompt from the prompts repository (openyodel/prompts). It describes the fundamental interaction mode.purpose_override— refines the profile (optional){ "yodel": { "purpose": "walkie-talkie", "purpose_override": "Sprich wie ein Offizier. Kurze Befehle." } }Appended to the base prompt. Allows the client (or end user) to customize behavior without replacing the whole system prompt. Free-form string, not an enum — supports combinations and nuance that a tag system can't capture.
Gateway behavior
openyodel/promptsusingpurposeas keypurpose_overrideis set → append itpurposeis absent → neutral defaultpurpose_overrideis set withoutpurpose→ append to neutral defaultProposed purpose values
walkie-talkiedashboardbig-screensmartwatchtvterminalchatdictationkioskspeakerheadsetDistinction from device.type
device.type= hardware platform (audio codecs, capabilities)purpose= why is the user talking to the agent?purpose_override= how should the agent adapt?Open questions
purposebe required or optional? (Proposal: optional)References