Skip to content

revka agent

Start an interactive agent session or run a single-shot query with provider/model/temperature overrides.

revka agent starts the agent loop from your terminal. With no arguments it opens an interactive chat session against your configured provider and model; with -m it runs a single query, prints the answer, and exits. Either way the agent has access to its full tool set, memory, and skills.

Use this command to talk to your agent locally, script one-off queries in a pipeline, or test a provider/model/temperature combination without editing config.toml. For a running, always-on agent that also serves the dashboard and channels, see revka gateway, daemon & service.

For background on what happens inside a turn, see The agent loop. For how conversation state is kept, see Sessions & conversation state.

Terminal window
revka agent [-m <TEXT>] [--session-state-file <PATH>] \
[-p <ID>] [--model <MODEL_ID>] [-t <TEMP>] \
[--peripheral <board:path>]...
Terminal window
revka agent # interactive session
revka agent -m "Summarize today's logs" # single message
revka agent --provider anthropic --model claude-sonnet-4-20250514
revka agent -p openrouter --model openai/gpt-4o --temperature 0.3
revka agent --session-state-file session.json # load/save state
FlagShortValueMeaning
--message-m<TEXT>Single-message mode: run one query, print the response, and exit instead of entering the interactive loop.
--session-state-file<PATH>JSON file used to persist and restore interactive session state across runs.
--provider-p<ID>Override the configured default provider for this run (e.g. anthropic, openrouter, openai, openai-codex).
--model<MODEL_ID>Override the configured default model for this run.
--temperature-t0.02.0Override the configured sampling temperature for this run.
--peripheral<board:path>Accepted and logged, but not yet wired into the agent — does not attach a device for the session. Repeatable.

Running revka agent with no -m opens a persistent chat loop. The agent keeps conversation history across turns within the session, so follow-up questions retain context.

Terminal window
revka agent

Inside the loop, type natural-language messages, or use these built-in commands:

CommandAction
/helpShow the available in-chat commands.
/clear or /newClear the conversation history. Prompts for confirmation, then deletes conversation and daily memory; long-term core memories are preserved.
/quit or /exitLeave interactive mode.
/think:<level>Set reasoning depth for the next turn. Levels: off, minimal, low, medium, high, max.

The interactive prompt also understands natural-language routing instructions, for example: “conversation uses kimi, coding uses gpt-5.3-codex”.

Pass -m/--message to run exactly one query. The agent prints its final response to stdout and exits, which makes it convenient for scripts, cron jobs, and CI:

Terminal window
revka agent -m "Summarize today's logs"

Because output goes to stdout, you can capture or pipe it:

Terminal window
SUMMARY="$(revka agent -m 'One-line status of the build')"

Single-shot mode does not read or write the interactive session-state file; it runs a one-off turn.

The three override flags let you try a different backend for a single run without touching config.toml. Each overrides only the corresponding configured default for that invocation:

Terminal window
# Use Anthropic + a specific model for this run only
revka agent --provider anthropic --model claude-sonnet-4-20250514
# Route through OpenRouter to a model id, with a lower temperature
revka agent -p openrouter --model openai/gpt-4o --temperature 0.3
  • -p/--provider overrides default_provider.
  • --model overrides default_model.
  • -t/--temperature overrides default_temperature.

When a flag is omitted, the value from config.toml is used.

The same overrides are also available as environment variables, which is handy in containers and CI. These shadow the matching config.toml keys for the whole process:

Terminal window
REVKA_PROVIDER=anthropic \
REVKA_MODEL=claude-sonnet-4-20250514 \
REVKA_TEMPERATURE=0.3 \
revka agent -m "hello"
VariableOverrides
REVKA_PROVIDERdefault_provider
REVKA_MODEL / MODELdefault_model
REVKA_TEMPERATUREdefault_temperature
REVKA_API_KEY / API_KEYapi_key

For the full provider catalog and how to register custom or local endpoints, see Custom providers & local LLMs and revka models, providers & auth.

Session state files (--session-state-file)

Section titled “Session state files (--session-state-file)”

--session-state-file <PATH> points the interactive loop at a JSON file used to persist and restore the conversation:

Terminal window
revka agent --session-state-file session.json
  • On start, if the file exists, the prior conversation history is loaded so you resume where you left off. If it does not exist, the session starts fresh.
  • After each turn, the updated history is written back to the file.
  • On /new or /clear, the cleared state is saved to the file as well.

The path is also used to derive a stable session identifier, so memory tied to that session lines up with the saved history. Point different files at different ongoing conversations to keep them separate.

Terminal window
# Resume an ops conversation, separate from a research one
revka agent --session-state-file ~/.revka/sessions/ops.json
revka agent --session-state-file ~/.revka/sessions/research.json

See Sessions & conversation state for the broader model of how Revka tracks conversations.

--peripheral <board:path> is accepted by the CLI and its value is logged, but it is not currently wired into the agent — passing it does not attach a device or expose any hardware tool calls for the session. The agent’s peripheral tools are built exclusively from the [peripherals] section of config.toml.

To make peripherals available to the agent, register them persistently via revka peripheral add or by editing config.toml directly. For the full board list, flashing, and persistent registration, see revka hardware & peripheral.

Terminal window
# Interactive session on your configured defaults
revka agent
# One-off summary, captured into a variable
NOTES="$(revka agent -m 'Summarize the last hour of audit events')"
# Try a different provider/model/temperature for one run
revka agent -p anthropic --model claude-sonnet-4-20250514 -t 0.2
# Resume a named, persisted conversation
revka agent --session-state-file ~/.revka/sessions/daily.json