Documentation
Everything you need to provision, monitor, and respond to monkeys in production.
Quickstart
This guide walks you through provisioning your first monkey. Estimated time: under 5 minutes. Estimated time until first incident: shortly thereafter.
Prerequisites
- An IMO account with an active API key
- A receiving environment (satellite, station, or on-prem habitat) with a valid delivery endpoint
- Reviewed and acknowledged the Aggressive Posture Advisory (see IMO-RB-047)
The Monkey Manifest
Monkeys are declared using a YAML manifest. Submit it to the provisioning API or pipe it directly with curl.
yamlapiVersion: imo.online/v1
kind: Monkey
metadata:
name: henry.kissinger
namespace: satellite-of-love
spec:
species: chimpanzee
temperament: unpredictable
bananaCredits: 500
namedFor: scalp # required field; value is cosmetic only
postureThreshold: low # how much ambient aggression henry.kissinger tolerates
compatibleOperators:
- crow.t.robot
- tom.servo
incompatibleOperators:
- mike.nelson # triggers escalation; see RB-047
compatibleOperators will be perceived as a threat. Do not assume aggressive posture near the delivery zone. If you are unsure what constitutes aggressive posture, it is probably whatever you are doing right now.
Provision via curl
bashcurl -X POST https://instantmonkeys.online/v1/monkeys/provision \
-H "Authorization: Bearer $IMO_API_KEY" \
-H "Content-Type: application/yaml" \
--data-binary @monkey.yaml
Delivery & Webhooks
Upon successful delivery, IMO sends a monkey.delivered event to your configured webhook endpoint. Register your endpoint in the IMO dashboard under Settings β Webhooks.
Example payload:
json{
"event": "monkey.delivered",
"monkey_id": "henry.kissinger",
"namespace": "satellite-of-love",
"species": "chimpanzee",
"crate_integrity": "nominal",
"banana_credits_remaining": 500,
"delivered_at": "1997-03-02T09:14:00Z",
"warnings": [
"Do not assume aggressive posture.",
"Crate will be breached within 60 seconds of delivery. This is expected behavior."
]
}
monkey.escaped webhook fires automatically. You do not need to handle this; it is too late.
API Reference
Base URL: https://instantmonkeys.online/v1
All requests require an Authorization: Bearer <token> header. Rate limits: 100 monkeys/hour on Pro, unlimited on Enterprise Ape.
Provision a monkey
Provisions a new monkey from the global primate pool and initiates delivery to your registered environment.
| Field | Type | Description |
|---|---|---|
name required |
string |
Hostname for the monkey. Must be DNS-compliant. We recommend henry.kissinger. |
species |
string |
Primate species. Default: chimpanzee. See species catalog for available options. |
bananaCredits |
integer |
Initial banana credit allocation. Insufficient credits are the leading cause of INC-class incidents. |
incompatibleOperators |
string[] |
Operators whose posture will be interpreted as aggressive. Triggers monkey.hostile alert. |
Get monkey details
Returns full configuration and current state for the specified monkey.
If the monkey's location is unknown, the location field will be null and fate will be "unknown". This is not an error condition. We have simply lost track of the monkey.
Get monkey status
Returns the current operational status of the specified monkey. Possible values: nominal, escaped, hostile, in_rafters, unconscious, unknown.
json{
"monkey_id": "henry.kissinger",
"status": "in_rafters",
"threat_level": "HIGH",
"last_seen": "2024-01-15T10:38:00Z",
"objects_thrown": 14,
"banana_credits_remaining": 0,
"active_incident": "INC-0822",
"recommended_action": "See IMO-RB-047"
}
Delete a monkey
Attempts to deprovision the specified monkey.
405. This is by design. You accepted the terms at checkout.
Get banana credit balance
Returns the current banana credit balance for your account. Monitor this closely. Banana credit exhaustion is the leading precursor to monkey.hostile events and the number one cause of INC-class incidents in production environments.
json{
"credits_remaining": 0,
"credits_consumed_today": 500,
"burn_rate": "critical",
"estimated_time_to_incident": "imminent",
"recommendation": "Top up immediately. Do not make eye contact."
}
IMO-RB-047: Rogue Primate Response
Overview
This runbook covers the response procedure for a rogue or hostile primate deployment. It is most commonly triggered when a monkey perceives operator posture as aggressive. Follow steps in order. Do not skip steps. Step 3 is the one people always skip. Do not skip step 3.
Response Steps
Acknowledge the alert
Acknowledge monkey.hostile in your alerting platform. Update the incident channel. Set status to investigating.
Check banana credit balance
Call GET /v1/bananas/credits. If credits_remaining is 0, top up immediately via the IMO dashboard. Banana credit exhaustion is the root cause in approximately 80% of hostile incidents. Restoring credits may resolve the incident without further intervention.
Assess operator posture
Identify which operator is in proximity to the monkey. Verify their posture is not being interpreted as aggressive. If unsure, assume it is. Have the operator adopt a non-threatening posture immediately:
- Rub chest using the back of the hand. The front of the hand will make things worse.
- Loll head slowly side to side.
- Drool slightly.
- Produce soft "ook" vocalizations. Volume should be low. Do not maintain eye contact.
Continue until threat level decreases or monkey retreats to rafters. Retreating to rafters is an improvement. Update incident status to monitoring.
Rafter containment protocol
If the monkey has taken up residence in the rafters, maintain non-aggressive posture and do not attempt to retrieve them. Continue "ook" vocalizations. Monitor objects_thrown metric via GET /v1/monkeys/{id}/status. A decreasing throw rate indicates de-escalation. An increasing rate indicates escalation to step 5.
Escalate to P1 β do not call Bobo
If de-escalation attempts have failed and object-throwing continues at scale, escalate to P1. Page the on-call lead. Update incident severity to CRITICAL.
You may be tempted at this point to engage a third-party primate whisperer. Do not. See the warning at the top of this runbook. Bobo will defect. Bobo will throw microwaves.
Blowgun authorization
Blowgun use requires explicit approval from the on-call lead. Submit authorization request in the incident channel with the following information:
- Monkey ID and current status
- Confirmation that steps 1β5 were followed in order
- Confirmation that Bobo was not contacted
- Current
objects_throwncount and most recent object class (e.g., microwave, chair, unspecified debris)
Upon approval, deploy blowgun. Both the monkey and any defected primate whisperers will fall unconscious. The immediate threat will be resolved.
resolved and begin postmortem scheduling.
Post-incident
Confirm monkey location and current status via GET /v1/monkeys/{id}/status. If status returns "unknown" and "fate": "unknown", document this in the incident record and close. Fate unknown is an accepted terminal state. Do not reopen the incident to investigate fate.
Schedule a blameless postmortem within 48 hours. The postmortem template is available in the IMO dashboard under Runbooks β Templates β INC-Primate-Postmortem.