Unified Agent Gateway
Unified Agent Gateway
Version: 1.0.0
Single Entry Point for All LLM Platform Agents
This gateway provides a unified OpenAPI interface for:
- OSSA-compliant agents (validation, deployment, orchestration)
- Drupal llm-platform (content, users, sites, data management)
- Agent Studio (Mac/iOS/CarPlay/VSCode/IDE)
- Agent Chat (Claude Code replacement)
- Langflow/LangChain/K-Agent workflows
- BuildKit (agent lifecycle management)
- GitLab CI/CD orchestration
Architecture:
- Protocol: HTTP/REST + gRPC (agent-mesh)
- Auth: API Key + JWT (GitLab SSO)
- Registry: agent-router (service discovery)
- Tracing: Phoenix (all requests)
- Metrics: Prometheus
- Storage: Drupal llm-platform (single source of truth)
Base URL
https://gateway.agent-buildkit.orb.local/api/v1- Productionhttp://localhost:8080/api/v1- Local development (Orbstack)
Authentication
This API requires authentication. See Authentication Guide for details.
Endpoints
Create and deploy new agent
POST /agents
Description: Creates an OSSA-compliant agent and deploys to K8s via Helm. Registers with agent-router, starts Phoenix tracing.
Request Body:
{}
Responses:
201: Agent created and deployed
{}
Example:
curl -X POST "https://api.ossa.dev/agents" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d @request.json
List all agents
GET /agents
Parameters:
undefined(undefined) - No descriptionundefined(undefined) - No descriptionundefined(undefined) - No description
Responses:
200: List of agents
{}
Example:
curl -X GET "https://api.ossa.dev/agents" \ -H "Authorization: Bearer YOUR_TOKEN"
Get agent details
GET /agents/{agentId}
Parameters:
undefined(undefined) - No description
Responses:
200: Agent details
{}
Example:
curl -X GET "https://api.ossa.dev/agents/{agentId}" \ -H "Authorization: Bearer YOUR_TOKEN"
Update agent
PUT /agents/{agentId}
Parameters:
undefined(undefined) - No description
Request Body:
{}
Responses:
200: Agent updated
{}
Example:
curl -X PUT "https://api.ossa.dev/agents/{agentId}" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d @request.json
Delete agent
DELETE /agents/{agentId}
Parameters:
undefined(undefined) - No description
Responses:
204: Agent deleted
Example:
curl -X DELETE "https://api.ossa.dev/agents/{agentId}" \ -H "Authorization: Bearer YOUR_TOKEN"
Execute agent task
POST /agents/{agentId}/execute
Description: Send task to agent and get response
Parameters:
undefined(undefined) - No description
Request Body:
{}
Responses:
200: Task executed
{}
Example:
curl -X POST "https://api.ossa.dev/agents/{agentId}/execute" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d @request.json
Create Drupal content
POST /drupal/content
Description: Create content node via llm-platform API
Request Body:
{}
Responses:
201: Content created
{}
Example:
curl -X POST "https://api.ossa.dev/drupal/content" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d @request.json
Query Drupal content
GET /drupal/content
Parameters:
type(query) - No descriptionstatus(query) - No description
Responses:
200: Content list
{}
Example:
curl -X GET "https://api.ossa.dev/drupal/content" \ -H "Authorization: Bearer YOUR_TOKEN"
Create Drupal user
POST /drupal/users
Request Body:
{}
Responses:
201: User created
Example:
curl -X POST "https://api.ossa.dev/drupal/users" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d @request.json
List users
GET /drupal/users
Responses:
200: User list
Example:
curl -X GET "https://api.ossa.dev/drupal/users" \ -H "Authorization: Bearer YOUR_TOKEN"
Build new Drupal site
POST /drupal/sites
Description: Agent creates complete Drupal site with modules/config
Request Body:
{}
Responses:
202: Site creation started
{}
Example:
curl -X POST "https://api.ossa.dev/drupal/sites" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d @request.json
Create workflow
POST /workflows
Description: Create Langflow or LangChain workflow
Request Body:
{}
Responses:
201: Workflow created
Example:
curl -X POST "https://api.ossa.dev/workflows" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d @request.json
List workflows
GET /workflows
Parameters:
framework(query) - No description
Responses:
200: Workflow list
Example:
curl -X GET "https://api.ossa.dev/workflows" \ -H "Authorization: Bearer YOUR_TOKEN"
Execute workflow
POST /workflows/{workflowId}/execute
Parameters:
workflowId(path, required) - No description
Request Body:
{}
Responses:
200: Workflow executed
Example:
curl -X POST "https://api.ossa.dev/workflows/{workflowId}/execute" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d @request.json
Create remote coding session
POST /studio/sessions
Description: Creates coding session accessible from iOS/CarPlay. Agent continues work when you're away from computer.
Request Body:
{}
Responses:
201: Session created
{}
Example:
curl -X POST "https://api.ossa.dev/studio/sessions" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d @request.json
List active sessions
GET /studio/sessions
Responses:
200: Active sessions
Example:
curl -X GET "https://api.ossa.dev/studio/sessions" \ -H "Authorization: Bearer YOUR_TOKEN"
Queue task for agent
POST /studio/sessions/{sessionId}/tasks
Description: Queue coding task to run while you're mobile
Parameters:
sessionId(path, required) - No description
Request Body:
{}
Responses:
202: Task queued
Example:
curl -X POST "https://api.ossa.dev/studio/sessions/{sessionId}/tasks" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d @request.json
Trigger pipeline for project
POST /gitlab/pipelines
Request Body:
{}
Responses:
202: Pipeline triggered
Example:
curl -X POST "https://api.ossa.dev/gitlab/pipelines" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d @request.json
List pipelines
GET /gitlab/pipelines
Responses:
200: Pipeline list
Example:
curl -X GET "https://api.ossa.dev/gitlab/pipelines" \ -H "Authorization: Bearer YOUR_TOKEN"
List available packages
GET /gitlab/packages
Description: Query package registry
Parameters:
scope(query) - No description
Responses:
200: Package list
{}
Example:
curl -X GET "https://api.ossa.dev/gitlab/packages" \ -H "Authorization: Bearer YOUR_TOKEN"
Discover services
GET /registry/discover
Description: Query agent-router for available services/agents
Parameters:
capability(query) - No descriptionframework(query) - No description
Responses:
200: Discovered services
{}
Example:
curl -X GET "https://api.ossa.dev/registry/discover" \ -H "Authorization: Bearer YOUR_TOKEN"