Project settings
| Method | Path | Description |
|---|---|---|
| GET | /api/projects/{id}/settings | Services, environment variables, review commands and setup commands. |
| PATCH | /api/projects/{id}/settings | Update project-level setup: hostSetupCommand, setupCommand, warmupCommand, agentWorkDir, sessionBaseBranch, prTargetBranch, sandboxTier. |
| POST | /api/projects/{id}/settings/import | Replace all settings from a kosuke.config.json, atomically. |
| POST | /api/projects/{id}/settings/services | Add a service. |
| PATCH, DELETE | /api/projects/{id}/settings/services/{serviceId} | Update or remove a service. |
| POST | /api/projects/{id}/settings/env-vars | Batch upsert. Body is an array of { key, value, isSecret }. Values are encrypted at rest. |
| DELETE | /api/projects/{id}/settings/env-vars | Batch delete. Body is an array of ids. |
| POST | /api/projects/{id}/settings/review-commands | Add a review command. Body { name, command, directory }. |
| PATCH, DELETE | /api/projects/{id}/settings/review-commands/{commandId} | Update or remove one. |
| POST | /api/projects/{id}/settings/agentic-deploy | Start a deploy with an empty body, or continue a paused one with { userResponse }. |
| POST | /api/projects/{id}/settings/agentic-deploy/cancel | Cancel a deploy in progress. |
A service is { name, directory, kind, endpoints, startCommand, stopCommand, after, envFiles, sortOrder }.
Names must be lowercase alphanumeric with inner hyphens, because they become DNS labels
and unit names. kind is process or docker-stack. Each endpoint is
{ name, port, exposure, healthRoute } with exposure internal, public or preview.
List the primary user-facing endpoint first: it answers {{service.url}} and drives the
readiness probe. Ports must be unique across the whole project, and after must name
services that exist.