Orchestration Local engine
goOn is the local orchestration engine: it runs tasks, projects, agents and productions on your machine, and exposes a REST API used by Yapuka Code and Yapuka Studio.
Overview
goOn is a service written in Go that runs in the background on each machine. It is the only backend of the Yapuka ecosystem: the desktop applications simply talk to it. It keeps its data locally, in ~/.config/goon/ (SQLite database, configuration, brand cache).
- Tasks: triggered manually, on a schedule (cron), by a modified file or by a webhook.
- Projects and missions: a project groups missions broken down into sub-tasks, each with a role (architect, reviewer…) and an estimate.
- Agents: sub-tasks are handed to AI agents (for example Claude Code) that work in the project’s folders and Git repositories, on dedicated branches.
- Productions: the creative deliverables managed from Yapuka Studio.
How a run works
Every run follows the same pipeline:
- a trigger starts the task;
- the pre-hooks run and can cancel or skip the run;
- the executor does the work (shell command, HTTP call, task chain, AI agent);
- the final hooks always run, even after a failure;
- the result and logs are saved in the local database.
Executors, triggers and hooks are plugins: you extend goOn without touching its core.
Installation and service
goOn is shipped with Yapuka Code, which starts it automatically. To use it on its own, install it as a system service:
goon daemon install # installs and starts the service
goon daemon status # checks that it is running
goon daemon restart # restarts after a configuration changeThe configuration is in ~/.config/goon/config.yaml and the task definitions are in ~/.config/goon/tasks.yaml.
Command line
| Command | Purpose |
|---|---|
goon serve | Runs the server in the foreground |
goon list | Lists the declared tasks |
goon run <task> | Runs a task immediately |
goon logs <run> | Shows the logs of a run |
goon plugins | Lists the loaded plugins |
goon brands import <folder> | Imports a brand package into the local cache |
REST API
The API listens on http://localhost:18080, in JSON. Every request must carry the local key, read from ~/.config/goon/api_key, in the X-API-Key header.
| Method | Path | Purpose |
|---|---|---|
| GET | /health | Service status |
| GET | /api/v1/tasks | List of tasks |
| POST | /api/v1/tasks/{id}/run | Starts a task |
| GET | /api/v1/runs | Run history (paginated) |
| GET | /api/v1/runs/{id}/logs | Live logs (SSE) |
| GET | /api/v1/projects | Projects, missions and sub-tasks |
| GET | /api/v1/plugins | Available plugins |
curl -H "X-API-Key: $(cat ~/.config/goon/api_key)" \
http://localhost:18080/api/v1/tasksNever commit the key to version control and do not expose port 18080 on the network: the API is intended for the local machine only.
Going further
goOn works on its own, but it can also join Maestro to share work across several machines. To control it through an interface, use Yapuka Code (development) or Yapuka Studio (creative production).