Endpoint
Returns a list of all 94 available services that can be included in generated stacks. Services are organized by category (AI platforms, databases, monitoring, etc.) and include metadata like maturity level, resource requirements, and dependencies.
Authentication
Optional API key for authenticated requests with higher rate limits
Query Parameters
Filter services by category. Valid categories:
ai-agents - AI coding agents (Claude Code, Codex, etc.)
ai-platforms - AI chat UIs and platforms
ai-models - Local LLM and AI models
automation - Workflow automation tools
database - Databases and caching
vector-db - Vector databases
media - Media processing and storage
social - Social media tools
analytics - Analytics platforms
knowledge - Knowledge management and documents
storage - Object storage
devtools - Developer tools
proxy - Reverse proxies
monitoring - Monitoring and observability
browser - Browser automation
search - Search engines
communication - Chat and communication
streaming - Streaming services
security - Security tools
desktop - Desktop environments
Filter by maturity level:
stable - Production-ready services
beta - Feature-complete but not battle-tested
experimental - Early stage or limited testing
Response
Array of service definitions Show Service object properties
Unique service identifier (e.g., postgresql, redis, n8n)
Human-readable service name
Maturity level: stable, beta, or experimental
Docker image with pinned tag
Exposed ports configuration
Required service IDs that must be included
Service IDs that cannot be used together
Estimated memory usage in megabytes
Default environment variables
Docker health check configuration
List of all available categories with counts
Total number of services returned
Examples
List All Services
curl http://localhost:3456/v1/services
Response (200):
{
"services" : [
{
"id" : "postgresql" ,
"name" : "PostgreSQL" ,
"description" : "Open-source relational database" ,
"category" : "database" ,
"maturity" : "stable" ,
"image" : "postgres:16-alpine" ,
"ports" : [{ "container" : 5432 , "host" : 5432 }],
"dependencies" : [],
"conflicts" : [],
"estimatedMemoryMB" : 256 ,
"env" : {
"POSTGRES_USER" : "openclaw" ,
"POSTGRES_DB" : "openclaw"
},
"volumes" : [
{ "source" : "postgres_data" , "target" : "/var/lib/postgresql/data" }
],
"healthCheck" : {
"test" : [ "CMD-SHELL" , "pg_isready -U openclaw" ],
"interval" : "10s" ,
"timeout" : "5s" ,
"retries" : 5
}
},
{
"id" : "redis" ,
"name" : "Redis" ,
"description" : "In-memory data structure store" ,
"category" : "database" ,
"maturity" : "stable" ,
"image" : "redis:7-alpine" ,
"ports" : [{ "container" : 6379 , "host" : 6379 }],
"dependencies" : [],
"conflicts" : [ "valkey" ],
"estimatedMemoryMB" : 128 ,
"volumes" : [
{ "source" : "redis_data" , "target" : "/data" }
]
}
],
"categories" : [
{ "id" : "database" , "name" : "Database & Caching" , "count" : 6 },
{ "id" : "ai-platforms" , "name" : "AI Platforms & Chat UIs" , "count" : 6 }
],
"total" : 94
}
Filter by Category
Get all database services:
curl "http://localhost:3456/v1/services?category=database"
Response (200):
{
"services" : [
{
"id" : "postgresql" ,
"name" : "PostgreSQL" ,
"category" : "database" ,
"maturity" : "stable"
},
{
"id" : "redis" ,
"name" : "Redis" ,
"category" : "database" ,
"maturity" : "stable"
},
{
"id" : "neo4j" ,
"name" : "Neo4j" ,
"category" : "database" ,
"maturity" : "stable"
}
],
"categories" : [
{ "id" : "database" , "name" : "Database & Caching" , "count" : 3 }
],
"total" : 3
}
Filter by Maturity Level
Get only stable services:
curl "http://localhost:3456/v1/services?maturity=stable"
Response (200):
{
"services" : [
/* Array of stable services */
],
"categories" : [ /* ... */ ],
"total" : 78
}
Combine Filters
Get stable database services:
curl "http://localhost:3456/v1/services?category=database&maturity=stable"
With Authentication
curl http://localhost:3456/v1/services \
-H "X-API-Key: sk_live_abc123"
Get Service by ID
Retrieve a single service by its unique identifier.
Path Parameters
Service identifier (e.g., postgresql, redis, n8n)
Example Request
curl http://localhost:3456/v1/services/postgresql
Response (200):
{
"service" : {
"id" : "postgresql" ,
"name" : "PostgreSQL" ,
"description" : "Open-source relational database" ,
"category" : "database" ,
"maturity" : "stable" ,
"image" : "postgres:16-alpine" ,
"ports" : [{ "container" : 5432 , "host" : 5432 }],
"dependencies" : [],
"conflicts" : [],
"estimatedMemoryMB" : 256 ,
"env" : {
"POSTGRES_USER" : "openclaw" ,
"POSTGRES_DB" : "openclaw"
},
"volumes" : [
{ "source" : "postgres_data" , "target" : "/var/lib/postgresql/data" }
],
"healthCheck" : {
"test" : [ "CMD-SHELL" , "pg_isready -U openclaw" ],
"interval" : "10s" ,
"timeout" : "5s" ,
"retries" : 5
}
}
}
Service Not Found
curl http://localhost:3456/v1/services/nonexistent
Response (404):
{
"error" : {
"code" : "NOT_FOUND" ,
"message" : "Service \" nonexistent \" not found"
}
}
Error Responses
Show Error object properties
Error code: INTERNAL_ERROR, NOT_FOUND, or UNAUTHORIZED
Human-readable error description
Internal Error (500)
{
"error" : {
"code" : "INTERNAL_ERROR" ,
"message" : "Failed to fetch services"
}
}
Unauthorized (401)
{
"error" : {
"code" : "UNAUTHORIZED" ,
"message" : "Invalid API key."
}
}
Use Cases
Service Discovery UI
Build a service picker interface:
const response = await fetch ( 'http://localhost:3456/v1/services' );
const { services , categories } = await response . json ();
// Group services by category for UI
const groupedServices = categories . map ( cat => ({
category: cat . name ,
services: services . filter ( s => s . category === cat . id )
}));
Dependency Resolution
Check service dependencies before generation:
const response = await fetch ( 'http://localhost:3456/v1/services/n8n' );
const { service } = await response . json ();
console . log ( 'n8n requires:' , service . dependencies ); // ["postgresql"]
Filter Services by Memory
Find lightweight services:
const { services } = await fetch ( 'http://localhost:3456/v1/services' )
. then ( r => r . json ());
const lightweight = services . filter ( s => s . estimatedMemoryMB < 200 );
Next Steps
Presets Endpoint Browse pre-configured stack templates
Generate Endpoint Generate stacks with selected services