Realtime voice and chat
Mic audio enters as 16 kHz PCM. Gemini Live returns 24 kHz speech and live transcripts, while typed messages can join the same session.
Amos AI is an Enterprise Resource Agent—an AI agent that fully runs an ERP for you. Amos runs inside Zavora ERP. Voice or chat becomes a scoped accounting workflow: it reads the live ledger, follows an accounting playbook, asks before posting, and files evidence beside the conversation.
Amos
AI Accountant · online
Why it is a super agent
Amos is a standalone Rust and Axum service embedded in the ERP. ADK-Rust's RealtimeRunner keeps speech, text, transcripts, tool calls, and interruptions in one live session, so a user can speak naturally and type whenever precision matters.
When a request requires action, Amos loads a focused accounting skill and calls ERP tools through MCP. Each tool is wrapped with the user's role scopes and audit context. Ledger postings stop at an explicit approval gate enforced in Rust, then execute with the user's ERP token if approved.
The result stays visible. Amos maintains a workplan, drives the real ERP through a separate browser toolset, captures screenshot evidence, stores session history, recalls approved business context, and uses narrowly scoped background agents for scheduled accounting routines.
Mic audio enters as 16 kHz PCM. Gemini Live returns 24 kHz speech and live transcripts, while typed messages can join the same session.
MCP connects Amos to reports, invoices, bills, payments, payroll, procurement, inventory, reconciliation, tax filings, and period close.
Drop-in SKILL.md playbooks define tool order, accounting checks, confirmation points, and the actions Amos must never take.
A workplan shows each step. Tool activity, posting badges, and completion state arrive over the session WebSocket.
A Playwright MCP server navigates the product, verifies the result, and files screenshots beside the conversation.
Role scopes are checked on every tool call. A ledger write pauses at a code-enforced confirmation gate before the tool executes.
Postgres and pgvector retain business facts, lessons, and session summaries. Recall, deduplication, and forget paths keep that memory maintainable.
Scoped one-shot agents prepare briefings, management accounts, reconciliations, tax work, payment proposals, and close packs on the business calendar.
Case study · management accounts
The useful result is not a generic explanation. Amos queries the business ledger, compares periods and budget, calculates finance KPIs, names material drivers, and leaves the supporting workflow visible beside the answer.

The session clock supplies the user’s timezone, fiscal context, and work-as-of date so ‘last month’ resolves consistently.
The use_skill tool brings the financial-reporting or management-accounts workflow into context only when it is needed.
Scoped MCP tools run the P&L, budget comparison, prior-period reports, balance sheet, invoices, bills, payroll, and tax status.
Amos derives margins, DSO, DPO, liquidity, cash cover, and material variances from tool results rather than inventing figures.
The UI receives task progress, tool activity, the report, and suggested decisions through the current WebSocket session.
The transcript is stored and durable business facts or workflow lessons can be recalled in a later session.
Architecture
The realtime model never receives an unrestricted connection to the ledger. ADK-Rust bridges a filtered toolset into the session, and each call passes through authorization, confirmation, and audit wrappers before it reaches the ERP or browser.
Evidence and control
Amos uses an isolated Playwright MCP server to open the ERP, navigate to the affected record or report, verify the visible state, and capture an evidence card. The browser is a verification surface; accounting actions still go through the scoped ERP tools.
ledger:post sends a confirmation card and waits. Decline or timeout means the tool does not execute.

Composable accounting knowledge
Each skill is a versionable SKILL.md playbook. The realtime prompt receives a short catalog, then use_skill loads the full workflow and its allowed MCP tools only when the job needs them.
Proactive accounting
A routine declares its cron schedule, prompt, skill, exact tools, scopes, and notification behavior in TOML. ADK-Rust creates a short-lived LLM agent for that job, records the run, and sends the result to the ERP inbox.

The Rust behind Amos
The repository builds a RealtimeRunner, bridges MCP tools into the live session, and wraps every tool before the model can call it. The approval path is application code, so changing a prompt cannot bypass it.
Read the complete Amos crate ↗let mut builder = RealtimeRunner::builder()
.model(state.model.clone())
.config(config);
for tool in mcp_tools {
let scoped = ScopedTool::wrap(
tool,
granted_scopes.clone(),
user_id.clone(),
session_id.clone(),
audit.clone(),
Some(session.clone()),
);
builder = builder.tool_arc(
definition,
Arc::new(ToolBridgeAdapter::new(scoped, context_factory.clone())),
);
}if required_scopes.contains(&"ledger:post") {
if let Err(refusal) = self.confirm_with_user(&args).await {
self.record(self.inner.name(), AuditOutcome::Denied).await;
return Ok(json!({ "error": refusal }));
}
}
self.record(self.inner.name(), AuditOutcome::Allowed).await;
let args = self.with_user_token(args).await;
self.inner.execute(ctx, args).awaitCurrent deployment contract
Build a complete agent product
Amos shows how ADK-Rust can connect native audio, MCP tools, skills, memory, background agents, product UI, authorization, approval, and evidence around one production workflow.