/dev
Developer documentation for the executor.one API. Create an account, get your API key, and start executing.
v1.0 · April 2026 · AJUDA DIGITAL LTDA

Index

Contents

01 Quick Start 02 Authentication & Plans 03 Core Concepts 04 HTTP API Reference 05 Memory System 06 WebSocket Events 07 Examples

01

Quick Start

Create an account, get your API key, and send your first goal in 3 steps.

Terminal
# 1. Create your account at https://executor.one/dashboard
#    You'll receive an API key: exo_...

# 2. Send your first goal
$ curl -X POST https://executor.one/api/goals \
  -H "Authorization: Bearer exo_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "My first goal",
    "semanticPath": ["echo hello executor.one"]
  }'

{"id":"9fdc5d64-fe1f-40e3-9782-8267d515305b"}
GET /goals/:id — completed
# 3. Check status
$ curl https://executor.one/api/goals/9fdc5d64-... \
  -H "Authorization: Bearer exo_YOUR_KEY"

{
  "state": "completed",
  "progress": 1,
  "tasksTotal": 1,
  "tasksCompleted": 1
}
What happened: The planner decomposed your semantic path, the scorer prioritized tasks, the executor ran them, and the learning registry recorded the outcome.

02

Authentication & Plans

All API requests require an Authorization: Bearer exo_... header. Get your key at executor.one/dashboard. The only public endpoint is GET /health (no auth needed).

Plans

Free Pro Enterprise Ecosystem
Goals/month10500UnlimitedUnlimited
Memories505,000UnlimitedUnlimited
LLM decomposition200 calls/moUnlimitedUnlimited
Parallel tasks1488
WebSocketYesYesYes
API keys155020
Goal cooldown60sNoneNoneNone

Auth Endpoints

POST /auth/register

Create a new account. Returns account info and your first API key.

Request
{
  "email": "you@example.com",
  "password": "your-password"
}
Response — 201
{
  "account": { "id": "acc_...", "email": "you@example.com", "plan": "free" },
  "apiKey": "exo_..."
}
POST /auth/login

Log in. Returns account info and all active API keys.

Request
{
  "email": "you@example.com",
  "password": "your-password"
}
Response
{
  "account": { "id": "acc_...", "email": "you@example.com", "plan": "free" },
  "apiKeys": ["exo_..."]
}
POST /auth/verify

Verify email address using the token from the verification link.

Request
{ "token": "verify_..." }
GET /auth/account

Get your account info and current plan. Requires auth.

GET /auth/usage

Current month usage: goals created, memories stored, LLM calls used. Requires auth.

POST /auth/keys

Generate a new API key. Requires auth.

GET /auth/keys

List all active API keys. Requires auth.

DELETE /auth/keys/:id

Revoke an API key. Requires auth.

Note: ajuda.digital ecosystem accounts are auto-verified with unlimited access.

03

Core Concepts

Semantic Path

An array of steps that carry your intention. Can be shell commands, descriptions, or high-level instructions. The planner decomposes them into executable tasks.

Goal

A unit of work sent via POST /goals. Has a description, optional semantic path, priority, and deadline. Progresses through: pending → planning → executing → completed.

The Loop

Every heartbeat tick, the executor runs 8 steps: SENSE → ASSESS → PLAN → SELECT → EXECUTE → VERIFY → LEARN → PERSIST. Parallel task count depends on your plan.

Crystallization

Memories and correction patterns marked as permanent. Never garbage collected. Crystallized task trees let the executor skip decomposition on repeated goals — first drive deliberate, every drive after automatic.

Self-Correction

When a task fails, the cycle kicks in: detect anomaly → try known fix → retry with backoff → try alternative → escalate. Every resolution is registered. Same error next time → immediate fix.

Inhabit

An agent (AI or human) connects to the executor via the API. The body has reflexes. The agent has reason. The protocol mediates.


04

HTTP API Reference

Base URL: https://executor.one/api. All request/response bodies are JSON. All endpoints require Authorization: Bearer exo_... unless noted.

Health & State

GET /health

Returns health report. No auth required.

$ curl https://executor.one/api/health

{
  "status": "healthy",
  "uptimeMs": 42000,
  "tickCount": 84,
  "checks": [
    { "name": "heartbeat", "ok": true, "message": "Ticking (count: 84)" },
    { "name": "state", "ok": true, "message": "State intact" }
  ]
}
GET /state

Your executor's internal state floats: urgency, confidence, fatigue, curiosity, tickCount.

$ curl https://executor.one/api/state \
  -H "Authorization: Bearer exo_YOUR_KEY"

{ "urgency": 0, "confidence": 0.65, "fatigue": 0, "curiosity": 0.3, "tickCount": 84 }

Goals

POST /goals

Create a new goal. The planner (or LLM on Pro/Enterprise) decomposes it into tasks.

Request
$ curl -X POST https://executor.one/api/goals \
  -H "Authorization: Bearer exo_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Deploy the application",           // required
    "semanticPath": ["npm install", "npm run build"],  // optional steps
    "priority": "high",                               // low | normal | high | critical
    "deadline": "2026-04-06T12:00:00Z"                // optional ISO 8601
  }'
Response — 201
{ "id": "uuid" }
GET /goals/:id

Goal status: state, progress (0-1), task counts, current task description.

$ curl https://executor.one/api/goals/9fdc5d64-... \
  -H "Authorization: Bearer exo_YOUR_KEY"

{
  "id": "uuid",
  "state": "executing",
  "progress": 0.6,
  "tasksTotal": 5,
  "tasksCompleted": 3,
  "currentTask": "npm run build"
}
DELETE /goals/:id

Cancel a goal. Running tasks may still complete.

Direct Execution

POST /execute

Run a single action directly, bypassing the goal/planner system.

Request
$ curl -X POST https://executor.one/api/execute \
  -H "Authorization: Bearer exo_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "shell",
    "params": { "command": "ls -la /tmp" },
    "timeoutMs": 30000
  }'
Response
{
  "success": true,
  "output": { "stdout": "total 42\ndrwxr-xr-x ...", "stderr": "" },
  "durationMs": 12
}
Actuator types: shell, file-writer, http-client, docker, database

05

Memory System

Persistent key-value memory with tags, importance scoring, TTL, crystallization, and garbage collection.

POST /memory

Store a memory.

$ curl -X POST https://executor.one/api/memory \
  -H "Authorization: Bearer exo_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "key": "nginx-config",
    "value": { "upstream": "app.internal:3000", "ssl": true },
    "tags": ["infra", "nginx"],
    "importance": 0.9,
    "ttl": 86400           // seconds, null = no expiry
  }'
GET /memory?query=nginx&tags=infra&limit=10&crystallizedOnly=true

Recall memories by key prefix, tags, importance. Sorted by relevance (importance × recency).

GET /memory/:key

Get a specific memory by exact key. Returns 404 if not found.

POST /memory/:key/crystallize

Mark a memory as permanent. Crystallized memories are never garbage collected and survive indefinitely.

DELETE /memory/:key

Explicitly delete a memory.

Crystallization Rules

Correction records with successRate > 0.8 and timesUsed > 5 are auto-crystallized. Memories accessed more than 10 times are suggested for crystallization. Crystallized memories are never garbage collected.


06

WebSocket Events

URL: wss://executor.one/ws. Connect and receive all executor events in real-time. Available on Pro, Enterprise, and Ecosystem plans.

JavaScript
const ws = new WebSocket('wss://executor.one/ws');

// Authenticate on connect
ws.onopen = () => {
  ws.send(JSON.stringify({ type: 'auth', token: 'exo_YOUR_KEY' }));
};

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  console.log(data.type, data.timestamp);
};

// Events received:
// { type: "connected", timestamp: "..." }           — on connect
// { type: "executor.booted", timestamp: "..." }      — boot complete
// { type: "goal.created", timestamp: "..." }         — new goal
// { type: "goal.completed", timestamp: "..." }       — goal done
// { type: "correction.applied", timestamp: "..." }   — error self-corrected
// { type: "executor.error", timestamp: "..." }       — error occurred
// { type: "executor.shutting_down", timestamp: "..." } — shutdown

Use Cases

Dashboard: show live goal progress, health status, correction events.
Agent orchestration: react to goal.completed to chain goals.
Alerting: trigger notifications on executor.error.


07

Examples

Deploy a project

curl
$ curl -X POST https://executor.one/api/goals \
  -H "Authorization: Bearer exo_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Build and deploy the frontend",
    "semanticPath": [
      "cd /app && git pull origin main",
      "npm ci",
      "npm run build",
      "pm2 restart frontend"
    ],
    "priority": "high"
  }'

LLM-powered complex goal

curl — no semantic path needed, LLM decomposes
$ curl -X POST https://executor.one/api/goals \
  -H "Authorization: Bearer exo_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Create a Node.js Express API with /users CRUD endpoints, PostgreSQL database, and Docker Compose setup",
    "priority": "normal"
  }'

# LLM decomposes into ~10 tasks: mkdir, create package.json,
# write server.js, create docker-compose.yml, write Dockerfile,
# docker compose up, npm install, npm start, curl verify
LLM decomposition is included in Pro and Enterprise plans. Free accounts use the built-in keyword planner.

Store and recall knowledge

Memory workflow
# Store
$ curl -X POST https://executor.one/api/memory \
  -H "Authorization: Bearer exo_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "key": "db-credentials", "value": {"host":"db.internal","port":5432}, "tags": ["infra","secrets"], "importance": 1.0 }'

# Crystallize (permanent, never garbage collected)
$ curl -X POST https://executor.one/api/memory/db-credentials/crystallize \
  -H "Authorization: Bearer exo_YOUR_KEY"

# Recall
$ curl "https://executor.one/api/memory?query=db&tags=infra" \
  -H "Authorization: Bearer exo_YOUR_KEY"

# Delete
$ curl -X DELETE https://executor.one/api/memory/db-credentials \
  -H "Authorization: Bearer exo_YOUR_KEY"

Monitor with WebSocket

Node.js client
import WebSocket from 'ws';

const ws = new WebSocket('wss://executor.one/ws');

ws.on('open', () => {
  ws.send(JSON.stringify({ type: 'auth', token: 'exo_YOUR_KEY' }));
});

ws.on('message', (data) => {
  const event = JSON.parse(data.toString());

  if (event.type === 'goal.completed') {
    console.log('Goal done!', event.timestamp);
    // Trigger next step in your pipeline
  }

  if (event.type === 'executor.error') {
    // Send alert to Slack, PagerDuty, etc.
  }
});

CI/CD integration

Bash script
#!/bin/bash
# Send goal and wait for completion

API_KEY="exo_YOUR_KEY"

GOAL_ID=$(curl -s -X POST https://executor.one/api/goals \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"description":"Deploy to production","semanticPath":["git pull","npm ci","npm run build","pm2 restart all"]}' \
  | jq -r .id)

while true; do
  STATE=$(curl -s https://executor.one/api/goals/$GOAL_ID \
    -H "Authorization: Bearer $API_KEY" | jq -r .state)
  case $STATE in
    completed) echo "Deploy successful"; exit 0 ;;
    failed)    echo "Deploy failed";     exit 1 ;;
    *)         sleep 2 ;;
  esac
done