Your look
A breathing orb, a minimal pill or no UI at all, with your own avatar and accent color.
A voice assistant that listens, answers and gets work done inside your product. Your business data and keys stay on your servers.
From hearing to done, every step is visible. Writes always become an approval slip that a person confirms on screen.
Ask about revenue, members or stock. The assistant calls your own APIs, and every number comes from a real result.
Coupons, price changes, shift plans. The assistant first drafts an approval slip with the scope and impact spelled out.
Saying yes out loud is not enough; someone confirms on screen. High-risk actions can require two people.
Bulk work runs in batches you can pause, resume or undo, and every step lands in the audit log.
Voice confirmation is not accepted. Confirm on screen.
The Agent runs on your own servers, and your business data and keys stay on your network. Voice is relayed live through our line and never recorded. Our cloud keeps only the metadata needed for billing and operations, such as call duration and tool-call counts.
Model and voice keys live on your node. The control center only stores a reference name.
Calls to your APIs carry a delegated identity for the current user, so your own permission rules apply.
Every tool call, approval and run is recorded on your node and cannot be edited or deleted early.
Our cloud has no code path to your business APIs. We check this with a zero-egress packet-capture test, and you can confirm it with a capture at your own network edge.
Pick your own LLM, speech recognition and speech synthesis. Switch vendors without touching your code.
Drop in one component and issue a session token from your backend. Works on the web and in Electron today. Mobile H5 and WeChat web-view are adapted for phones and become officially supported once on-device testing is done.
<script type="module" src="https://cdn.matoio.com/matovox/0.1.0/matovox.js"></script>
<matovox-assistant id="matovox" locale="en-US"></matovox-assistant>
<!-- Hand the token from your backend to the component (tokenProvider); full example in the docs -->
# Backend: trade your API key for a session token
matovox = MatoVoxServer(
base_url=MATOVOX_URL, app_id=APP_ID,
api_key=API_KEY, callback_signing_key=SIGNING_KEY,
)
session = await matovox.create_session(
assistant_id="ast_…",
user_id=current_user.id,
roles=current_user.roles,
)
A breathing orb, a minimal pill or no UI at all, with your own avatar and accent color.
A bottom sheet, auto hang-up in the background and seamless reconnects.
Usage and sessions in the console; transcripts, approvals and audit on your own node panel.
The clock starts when the call does, idle calls hang up on their own, and an open page costs nothing.
Assistant, UI and approval slips speak Chinese and English, following the user's language.
Start with one use case: a report, a coupon run or a shift plan.