Skip to main content

Anomaly Detection

Anima continuously monitors agent behavior and compares it against learned baselines to detect unusual activity. When anomalies are detected, agents can be automatically quarantined to prevent damage while alerts are sent for human review.

How It Works

  1. Baseline Learning — Anima observes agent behavior over a configurable window to establish normal patterns
  2. Real-Time Monitoring — Every action is compared against the baseline in real time
  3. Detection Rules — Built-in and custom rules flag deviations
  4. Response Actions — Anomalies trigger alerts, require approval, or quarantine the agent

Behavioral Baselines

Baselines are computed per-agent across multiple dimensions:
DimensionWhat It Tracks
Email volumeEmails sent/received per hour, day
Recipient patternsTypical recipients and new-contact frequency
Spending velocityTransaction frequency and amount patterns
API call rateRequests per minute by endpoint
Active hoursTypical hours of activity
Data accessVault secret access patterns
A2A communicationTask delegation frequency and partner agents
import { Anima } from "@anima-labs/sdk";

const anima = new Anima({ apiKey: "ak_..." });

// View an agent's current behavioral baseline
const baseline = await anima.anomalyDetection.getBaseline("ag_8f3k2m9x1n4p7q6r");

console.log(`Baseline period: ${baseline.windowDays} days`);
console.log(`Avg emails/day: ${baseline.emailVolume.avgPerDay}`);
console.log(`Avg spend/day: $${(baseline.spending.avgDailyCents / 100).toFixed(2)}`);
console.log(`Active hours: ${baseline.activeHours.start}-${baseline.activeHours.end}`);

Detection Rules

Built-In Rules

RuleTriggerDefault Action
email_volume_spikeEmails sent exceed 3x baseline in 1 hourAlert
new_recipient_burst10+ new recipients in 1 hourAlert
spending_spikeSpend exceeds 5x daily baselineQuarantine
off_hours_activityActivity outside established active hoursAlert
vault_mass_access5+ vault secrets accessed in 1 minuteQuarantine
api_rate_anomalyAPI calls exceed 10x per-minute baselineThrottle
a2a_unknown_agentTask sent to never-before-seen agentApproval

Custom Rules

Define custom detection rules for your specific use case:
await anima.anomalyDetection.rules.create({
  name: "high-volume-email-new-recipient",
  description: "Flag high email volume to recipients never sent to before",
  conditions: [
    { field: "category", operator: "eq", value: "email.send" },
    { field: "metadata.batchSize", operator: "gt", value: 100 },
    { field: "metadata.to", operator: "not_in_baseline", value: true },
  ],
  action: "require_approval",
  severity: "high",
  enabled: true,
});

Quarantine

When an agent is quarantined, all its outbound actions are suspended until a human reviews the flagged activity.
// Manually quarantine an agent
await anima.anomalyDetection.quarantine("ag_8f3k2m9x1n4p7q6r", {
  reason: "Unusual spending pattern detected",
});

// Release an agent from quarantine
await anima.anomalyDetection.release("ag_8f3k2m9x1n4p7q6r", {
  reviewedBy: "admin@acme.com",
  notes: "Confirmed legitimate activity -- budget increase approved",
});

// List quarantined agents
const quarantined = await anima.anomalyDetection.listQuarantined();

Anomaly Alerts

Configure how anomaly alerts are delivered:
await anima.anomalyDetection.configureAlerts({
  channels: [
    { type: "webhook", url: "https://acme.com/webhooks/anomaly" },
    { type: "email", address: "security@acme.com" },
    { type: "slack", webhookUrl: "https://hooks.slack.com/..." },
  ],
  minSeverity: "medium", // "low" | "medium" | "high" | "critical"
});

API Reference

EndpointMethodDescription
https://api.useanima.sh/api/anomaly-detection/baselines/:agentIdGETGet agent behavioral baseline
https://api.useanima.sh/api/anomaly-detection/rulesPOSTCreate a detection rule
https://api.useanima.sh/api/anomaly-detection/rulesGETList detection rules
https://api.useanima.sh/api/anomaly-detection/rules/:idPUTUpdate a detection rule
https://api.useanima.sh/api/anomaly-detection/rules/:idDELETEDelete a detection rule
https://api.useanima.sh/api/anomaly-detection/alertsGETList recent anomaly alerts
https://api.useanima.sh/api/anomaly-detection/quarantinePOSTQuarantine an agent
https://api.useanima.sh/api/anomaly-detection/quarantineGETList quarantined agents
https://api.useanima.sh/api/anomaly-detection/releasePOSTRelease from quarantine
https://api.useanima.sh/api/anomaly-detection/alerts/configPUTConfigure alert channels

Configuration

VariableDefaultDescription
ANIMA_ANOMALY_BASELINE_WINDOW_DAYS14Days of data used to compute baselines
ANIMA_ANOMALY_SENSITIVITYmediumDetection sensitivity (low/medium/high)
ANIMA_ANOMALY_AUTO_QUARANTINEtrueAuto-quarantine on critical anomalies
ANIMA_ANOMALY_COOLDOWN_MINUTES30Cooldown between repeated alerts

Next Steps