Immiscible docs
How to make every agent ask before it does something it can’t take back, see what each one spends, and check the record afterwards. Start with the path that sounds like you.
Finance teamsSee what the company spends on AI, give each team a budget and choose who approves. No code.Start without code
EngineersOne command creates an agent with a rule; then watch it ask a person before it pays a supplier it has never paid.Quickstart in five minutes
AI agentsA page written for a model: ask before acting, follow the decision, keep the receipt. Every page is also plain Markdown.Read the agent contract
Security reviewersWhat is signed, how to check a receipt or the whole ledger offline without trusting us, and the threat model.Review the security model
Quickstart in five minutes
Before an agent pays, it asks. Inside its rules it goes ahead; above the line, or to a supplier nobody has paid before, a person decides, and the agent waits.
- Create the agentnpx immiscible init
- Ask before payingPOST /v1/actions/authorize
- Approve itin the console, Slack or Teams
- Report what happenedand keep the signed receipt
curl -X POST "$IMMISCIBLE_URL/v1/actions/authorize" \
-H "authorization: Bearer $IMMISCIBLE_AGENT_KEY" \
-H "content-type: application/json" \
-d '{
"type": "payment",
"summary": "Pay Acme Supplies invoice 0931",
"payment": {
"amount": 125000,
"currency": "GBP",
"merchant": {
"name": "Acme Supplies",
"domain": "acme-supplies.example"
}
},
"provenance": [
{
"source": "user",
"detail": "invoice approved in the finance inbox"
}
],
"idempotencyKey": "inv-0931"
}'// npm install @immiscible/sdk
import { Immiscible } from '@immiscible/sdk';
// Reads IMMISCIBLE_URL and IMMISCIBLE_AGENT_KEY.
const immiscible = new Immiscible();
const decision = await immiscible.pay({
amount: 125000, // minor units: £1,250.00
currency: 'GBP',
merchant: {
name: 'Acme Supplies',
domain: 'acme-supplies.example',
},
summary: 'Pay Acme Supplies invoice 0931',
provenance: [
{
source: 'user',
detail: 'invoice approved in the finance inbox',
},
],
idempotencyKey: 'inv-0931',
});# pip install immiscible
from immiscible import Immiscible
# Reads IMMISCIBLE_URL and IMMISCIBLE_AGENT_KEY.
immiscible = Immiscible()
decision = immiscible.pay(
125000, # minor units: £1,250.00
"GBP",
{
"name": "Acme Supplies",
"domain": "acme-supplies.example",
},
summary="Pay Acme Supplies invoice 0931",
provenance=[
{
"source": "user",
"detail": "invoice approved in the finance inbox",
},
],
idempotency_key="inv-0931",
)Browse by area
Spend and budgets
What AI costs, where it goes and how to make it cost less.
Agents and approvals
What each agent may do alone, and how a person is asked.
Records and developers
The signed record, how to check it, and the API under it all.