Skip to content
Agent tooling · Projects

Agent tooling

Projects

Group related resources together. A project might contain a VM, CDN deployment, storage bucket, and DNS records, all for one app.

On this page5 sections

Why use projects#

  • Clean teardown: Delete all resources for an app in one command. No orphaned VMs or forgotten DNS records.
  • Health checks: Check the status of everything related to an app in one call.
  • Cost tracking: See how much each project costs per month.
  • No orphans: Resources are tracked by project, preventing forgotten infrastructure.

API endpoints#

Text
GET    /agent/projects              # List all projects
POST   /agent/projects              # Create a project
GET    /agent/projects/{id}         # Get project with resources
GET    /agent/projects/{id}/health  # Health check all resources
POST   /agent/projects/{id}/scale   # Scale compute resources
DELETE /agent/projects/{id}         # Teardown (requires X-Confirm: teardown)

Creating a project#

HTTP
POST /agent/projects
Authorization: Bearer ea_live_...

{
  "name": "my-portfolio",
  "description": "Personal portfolio website"
}

# Response:
{
  "project": {
    "id": "proj_a1b2c3d4e5f6",
    "name": "my-portfolio",
    "description": "Personal portfolio website",
    "resources": [],
    "created_at": "2026-02-18T12:00:00Z"
  },
  "tell_user": "Project \"my-portfolio\" created."
}

Resources are added to the project as the agent creates them. When using composite actions like deploy/static-site, all created resources are automatically associated with the project.

Tearing down a project#

Tearing down a project deletes ALL resources associated with it: VMs, CDN deployments, storage buckets and DNS records. This requires the X-Confirm: teardown header as a safety measure.

HTTP
DELETE /agent/projects/proj_a1b2c3d4e5f6
Authorization: Bearer ea_live_...
X-Confirm: teardown

# Response:
{
  "deleted": true,
  "project": "my-app",
  "resources": [
    { "type": "compute", "id": "vm_xyz", "name": "my-app", "status": "deleted" },
    { "type": "cdn", "id": "dep_abc", "name": "my-app-cdn", "status": "deleted" },
    { "type": "storage", "id": "my-app", "name": "my-app", "status": "deleted" }
  ],
  "tell_user": "Project \"my-app\" and all 3 resources have been deleted."
}

See also#