Agent settings
Voice, models, language, greeting and knowledge: settings of the agent, changed without a deploy unless the class fixes them.
The voice, the models, the language, the greeting and what the agent knows are settings of the
agent. You change them with pinecall agent set or the agent's Configure screen in the console,
and the next call uses them. No deploy. A class may also declare any of them,
and what it declares wins.
What is a setting?#
The class declares the contract: its state, its tools, its render(). Everything the agent runs
on is kept by the gateway, per agent, and laid over the class when a call starts. Every change is a
new version with who made it and why. A field the class declares itself is not read from here: see
Settings in the class.
pinecall agent set writes your own settings. A colleague's calls do not hear them.
The team's--team writes the team's sandbox settings. Everyone who set nothing of their own reads them.
Production--prod writes production's one set, if your org lets you act there.
The CLI calls each of these three a corner: your own, the team's and production's. A field set in your corner wins; one you did not set is read from the team's.
Example#
pinecall agent set --voice carolina --llm haiku --language en --note "first try"
pinecall agent set --greeting "Clínica Norte, good morning. How can I help you?"
pinecall agent set --voice carolina --prod
pinecall agent # the settings: your own, the team's and production's side by side
set changes only the fields you name. Everything else stays as it stands.
The settings#
| setting | pinecall agent set flag |
what it is |
|---|---|---|
| voice | --voice <name> |
a voice by name. pinecall voices lists them |
| text-to-speech | --tts <vendor> · --tts-model <model> |
the vendor and model that speak |
| speech-to-text | --stt <vendor> |
the vendor that listens |
| end of turn | --end-of-turn stt|livekit|smart-turn |
who says the caller has finished: the ears themselves (only where they can), or a model on the worker (Settings in the class) |
| model | --llm <model> |
haiku, sonnet, opus, a vendor, a model, or vendor/model |
| temperature | --temperature <n> |
how freely the model picks its words, in the vendor's own range. The vendor's default unless set |
| plugin options | --llm-builds · --llm-option · --stt-builds · --stt-option · --tts-builds · --tts-option |
a class of the vendor's plugin and its keyword arguments (below) |
| judge model | --judge <model> · --judge-builds · --judge-option |
the model this agent's calls are judged on, over the org's and Pinecall's; on your own key its evals are not billed |
| language | --language <tag> |
en, es, pt-BR: what the voice and the ears are set to |
| greeting | --greeting '…' · --greeting improvise · --greeting improvise:'…' · --greeting-interruptible on|off |
how the call opens (below) |
| hang-up | --hangup '…' · --hangup any |
lets the model end the call: when, in your words, or whenever it judges |
| turn taking | --endpointing-ms · --min-interruption-words · --eot-threshold · --eager-eot-threshold |
when a caller's turn is over, and how many words interrupt the agent |
| recording | --record on|off |
whether calls keep their audio. On unless set |
| longest call | --max-duration 1-60|off |
minutes a voice call may last. Ten unless set |
| memory policy | --remember '…' · --forget '…' |
what to keep about a caller, and what never to |
Three more settings have verbs of their own:
| setting | command |
|---|---|
| what the agent knows by heart | pinecall agent knowledge edit, or the agent's Configure ▸ Knowledge in the console |
| the documents it searches | pinecall docs attach <base> (see Knowledge bases) |
| how words are said and heard | pinecall lexicon add <word> --say '…' · pinecall lexicon hear <word> |
--remember and --forget take one phrase each and repeat: --remember 'allergies' --remember 'their usual doctor'.
They replace the list whole. pinecall memory policy takes the same two flags.
--languagedoes not translate the prompt. The framework's own rules are in English for every agent, and one of them is to answer in the language the caller speaks. Your docstrings andrender()are in whatever language you write them.
How the call opens#
There are two ways, and setting neither is a third:
--greeting '…'is said word for word as the call opens. It costs nothing and is the same every time.--greeting improviselets the model open in its own words, on its prompt;--greeting improvise:'…'gives it an instruction for the opening. It costs one model turn.- With neither, nobody speaks until the caller does. An opening that depends on who calls is
written in
onCall.
The caller cannot cut the opening short, so a "hello?" over it does not stop the agent;
--greeting-interruptible on lets them.
Versions and corners#
| command | does |
|---|---|
pinecall agent |
prints every field in your corner, the team's and production's, and the version each is at |
pinecall agent history |
every version: who set it, why (--note), and what changed |
pinecall agent diff --against team|production |
this corner against another |
pinecall agent rollback <version> |
brings an old version back as the next one |
pinecall agent clear <field> |
takes a field out of the corner, so the one below applies again |
pinecall agent pull · push <file> |
the corner as JSON, and a file sent back as the next version |
Each of them takes --team for the team's corner and --prod for production. Two people saving at
once never overwrite each other: the second is told which version the corner is at now.
Plugin options#
Every vendor runs on its LiveKit plugin, and three pairs of flags reach it directly, one pair per
stage. --llm-builds names a class of the plugin other than its default, dots reaching into a
module of it; --llm-option key=value passes one keyword argument as the plugin names it, and
repeats. A value is read as JSON when it is JSON, and as text otherwise:
pinecall agent set --llm openai/gpt-5.4-mini --llm-builds responses.LLM --llm-option use_websocket=true
pinecall agent clear llm-builds llm-options
--stt-builds, --stt-option, --tts-builds and --tts-option do the same for the ears and the
voice. Each option replaces Pinecall's option of the same name for that vendor. Set without
--llm (or --stt, --tts), they apply to the vendor the agent runs now, and that vendor stays
fixed: the backups Pinecall would try when it fails are not tried. A set that changes
a stage is tried once before it is kept, so a class or an option the plugin does not take is
refused in the plugin's words and nothing is saved.
--judge-builds and --judge-option do the same for the judge model:
--judge openai/qwen3-32b --judge-option base_url=http://gpu:8000/v1 judges this agent's calls on a model
of your own server.
Plugin options run only on your org's own key for that vendor. On the key Pinecall lends they are refused: add yours with
pinecall providers add <vendor>, or clear them.
A setting declared in the class#
A class can declare any of these fields itself, and then the class wins: the field is shown as
class in pinecall agent and locked in the console, and setting it is refused with a sentence
that names the class. Settings in the class has every field and how each
language writes it.