Documentation
Everything you need to deploy your first EU-sovereign AI process in under 5 minutes.
Quick start
Deploy your first AI process in 5 minutes. You will need an Abstractor account (free tier is sufficient) and Node.js 18+.
# 1. Install the Abstractor CLI
npm install -g @abstractor/cli
# 2. Authenticate
abstractor login
# 3. Create your first ProcessSpec
cat > invoice-approval.process.json << 'EOF'
{
"name": "invoice-approval",
"description": "Review supplier invoices and approve or flag for manual review",
"triggers": [
{ "type": "http_webhook", "method": "POST", "path": "/invoices" }
],
"outputs": [
{ "type": "json_response", "shape": { "decision": "str", "reason": "str" } }
],
"rules": [
"Approve invoices under EUR 1000 from known suppliers automatically",
"Flag invoices over EUR 10000 for manual review regardless of supplier",
"Reject invoices with missing VAT number"
],
"examples": [
{
"label": "small known supplier",
"input": { "amount": 450, "supplier": "Acme GmbH", "vat": "DE123456789" },
"expected_output": { "decision": "approved" },
"blocking": true
}
],
"constraints": { "max_latency_ms": 200, "receipt_retention_days": 365 }
}
EOF
# 4. Deploy it
abstractor deploy invoice-approval.process.json
# Output:
# [1/3] Generating actor... 1.4s
# [2/3] Compiling... 0.7s
# [3/3] Running tests... 1/1 PASS
# Deployed: invoice-approval@v1
# Endpoint: https://run.abstractor.io/p/inv-a7f3/invoices
# 5. Invoke it
curl -X POST https://run.abstractor.io/p/inv-a7f3/invoices \
-H "Authorization: Bearer $ABSTRACTOR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"amount": 450, "supplier": "Acme GmbH", "vat": "DE123456789"}'
# Response:
# {
# "decision": "approved",
# "reason": "Known supplier, amount below threshold",
# "hatp": { "receipt_id": "rcpt_01HX...", "sig": "ed25519:3a9f...", "ts": "..." }
# } ProcessSpec reference
A ProcessSpec is a JSON document (or YAML, if you prefer) that fully describes your AI process. The Abstractor CLI and API both accept ProcessSpec as input.
name string required Unique slug for this process. Must match [a-z0-9-]+. Used in the endpoint URL. description string required Natural-language description sent to the LLM as context. Be specific about the business domain. triggers Trigger[] required One or more trigger definitions. At least one is required. See Trigger reference below. outputs Output[] required Output shape definitions. Must match the shapes returned by your examples. rules string[] required Plain-language business rules. Write these as sentences. Minimum 1 rule. examples Example[] optional Concrete input/output pairs used as tests. Blocking examples block deployment on failure. constraints Constraints optional Runtime constraints. If omitted, defaults apply (200ms latency, 30-day retention). version string optional Optional semantic version. If omitted, Abstractor increments automatically on each deploy. API reference
Base URL: https://api.abstractor.io
All requests require an Authorization: Bearer <token> header. Tokens are issued from the dashboard.
/v1/processes Deploy a new process from a ProcessSpec. Returns the process object with endpoint URL.
/v1/processes List all processes in your account.
/v1/processes/{id} Get a single process by ID.
/v1/processes/{id} Deactivate a process. The endpoint stops accepting invocations. Receipts are preserved.
/v1/processes/{id}/export Export the full ProcessSpec as JSON. Always available, regardless of subscription status.
/v1/receipts/{receipt_id} Retrieve a HATP receipt by ID.
/v1/receipts List receipts for a process. Supports ?process_id=, ?since=, ?until=, ?limit= query params.
HATP receipt format
Every invocation produces a signed HATP (Hardware Attestation Trust Protocol) receipt. Receipts are self-contained and cryptographically verifiable without an Abstractor account.
hatp_version Protocol version. Currently "1.0". receipt_id Globally unique receipt identifier (ULID format). actor Actor name and version that handled this invocation. actor_hash SHA-256 hash of the compiled actor binary. ts ISO 8601 timestamp of the invocation (UTC). input_hash SHA-256 hash of the request payload. decision The primary output value (mirrors the first output field). rationale Human-readable explanation of the decision. duration_us Actor execution time in microseconds. region EU region where the actor executed. sig_alg Signature algorithm. Currently "ed25519". sig Ed25519 signature over (receipt_id + ts + input_hash + decision + rationale). pubkey_id Key identifier. Resolve to public key at https://keys.abstractor.io/{pubkey_id}.pub # Download Abstractor's public key curl -o abst-eu-1.pub https://keys.abstractor.io/abst-eu-1.pub # Retrieve a receipt abstractor receipts get rcpt_01HX7KQMN2P3QR4ST5UV6WX7Y > receipt.json # Verify the signature abstractor receipts verify receipt.json --pubkey abst-eu-1.pub # Output: VALID — signature verified against abst-eu-1 (ed25519)