Voix et chat en temps réel
L'audio micro arrive en PCM 16 kHz. Gemini Live renvoie la parole à 24 kHz et les transcriptions en direct, tandis que les messages tapés peuvent rejoindre la même session.
Amos AI est un agent de ressources d’entreprise : un agent d’IA qui gère entièrement un ERP pour vous. Amos fonctionne dans Zavora ERP. La voix ou le chat devient un workflow comptable délimité : il lit le grand livre en direct, suit un guide comptable, demande une approbation avant de comptabiliser et archive les preuves à côté de la conversation.
Amos
Comptable IA · en ligne
Pourquoi c’est un super agent
Amos est un service Rust et Axum autonome intégré dans l'ERP. ADK-Rust RealtimeRunner conserve la parole, le texte, les transcriptions, les appels d'outils et les interruptions dans une même session en direct, permettant à l'utilisateur de parler naturellement et de taper quand la précision est nécessaire.
Lorsqu’une demande nécessite une action, Amos charge une compétence comptable ciblée et appelle les outils ERP via MCP. Chaque outil est enveloppé avec les scopes de rôle de l’utilisateur et le contexte d’audit. Les écritures du grand livre s'arrêtent à une étape d'approbation explicite appliquée en Rust puis exécute avec le jeton ERP de l'utilisateur si approuvé.
Le résultat reste visible. Amos maintient un plan de travail, pilote l'ERP réel via un ensemble d'outils navigateur séparé, capture des preuves par captures d'écran, stocke l'historique de session, rappelle le contexte métier approuvé et utilise des agents d'arrière-plan à périmètre restreint pour les routines comptables planifiées.
L'audio micro arrive en PCM 16 kHz. Gemini Live renvoie la parole à 24 kHz et les transcriptions en direct, tandis que les messages tapés peuvent rejoindre la même session.
MCP connecte Amos aux rapports, factures, paiements, paie, achats, inventaire, rapprochements, déclarations fiscales et clôture périodique.
Les playbooks SKILL.md plug-and-play définissent l’ordre des outils, les contrôles comptables, les points de confirmation et les actions qu’Amos ne doit jamais effectuer.
Un plan de travail montre chaque étape. L'activité des outils, l'affichage des badges et l'état d'achèvement arrivent via le WebSocket de session.
Un serveur Playwright MCP navigue dans le produit, vérifie le résultat et archive des captures d'écran à côté de la conversation.
Les périmètres de rôle sont vérifiés à chaque appel d'outil. Une écriture dans le grand livre s'interrompt à une porte de confirmation imposée par le code avant l'exécution de l'outil.
Postgres et pgvector conservent faits métier, leçons et résumés de session. Rappel, déduplication et oubli assurent la maintenabilité de cette mémoire.
Les agents one-shot à périmètre défini préparent les briefings, comptes de gestion, rapprochements, travaux fiscaux, propositions de paiement et clôturent les packs sur le calendrier commercial.
Étude de cas · comptes de gestion
Le résultat utile n'est pas une explication générique. Amos interroge le grand livre métier, compare les périodes et budgets, calcule les KPI financiers, nomme les moteurs matériels et laisse le workflow de support visible à côté de la réponse.

L'horloge de session fournit le fuseau horaire de l'utilisateur, le contexte fiscal et la date de travail effective pour que « le mois dernier » soit résolu de manière cohérente.
L'outil use_skill intègre le workflow de reporting financier ou de comptes de gestion uniquement quand il est nécessaire.
Les outils MCP à périmètre défini exécutent le P&L, la comparaison budgétaire, les rapports de période précédente, le bilan, les factures, les paiements, la paie et le statut fiscal.
Amos déduit marges, DSO, DPO, liquidité, couverture de trésorerie et écarts matériels à partir des résultats d'outils plutôt que d'inventer des chiffres.
L'interface reçoit la progression des tâches, l'activité des outils, le rapport et les décisions suggérées via la session WebSocket en cours.
La transcription est stockée et des faits métier durables ou des leçons de workflow peuvent être rappelés lors d'une session ultérieure.
Architecture
Le modèle temps réel ne reçoit jamais une connexion non restreinte au grand livre. ADK-Rust fait passer un ensemble d'outils filtrés dans la session, chaque appel traversant des wrappers d'autorisation, confirmation et audit avant d'atteindre l'ERP ou le navigateur.
Preuve et contrôle
Amos utilise un serveur Playwright MCP isolé pour ouvrir l'ERP, naviguer vers l'enregistrement ou le rapport concerné, vérifier l'état visible, et capturer une carte de preuve. Le navigateur est une surface de vérification ; les actions comptables passent toujours par les outils ERP ciblés.
ledger:post envoie une carte de confirmation et attend. Refus ou délai d'attente signifie que l'outil ne s'exécute pas.

Connaissances comptables composables
Chaque compétence est un playbook SKILL.md versionnable. L’invite temps réel reçoit un court catalogue, puis utiliser_compétence charge le workflow complet et ses outils MCP autorisés uniquement lorsque le travail en a besoin.
Comptabilité proactive
Une routine déclare son planning cron, son prompt, sa compétence, ses outils exacts, ses périmètres et son comportement de notification en TOML. ADK-Rust crée un agent LLM éphémère pour ce travail, enregistre l'exécution et envoie le résultat à la boîte de réception ERP.

Le Rust derrière Amos
Le dépôt construit un RealtimeRunner, fait passer les outils MCP dans la session en direct et enveloppe chaque outil avant que le modèle puisse l'appeler. Le chemin d'approbation est du code applicatif, donc modifier un prompt ne peut le contourner.
Lire le crate Amos complet ↗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).awaitContrat de déploiement actuel
Construisez un produit agent complet
Amos montre comment ADK-Rust peut connecter l'audio natif, les outils MCP, les compétences, la mémoire, les agents en arrière-plan, l'interface produit, l'autorisation, l'approbation et les preuves autour d'un flux de travail de production unique.