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:

  1. a trigger starts the task;
  2. the pre-hooks run and can cancel or skip the run;
  3. the executor does the work (shell command, HTTP call, task chain, AI agent);
  4. the final hooks always run, even after a failure;
  5. 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 change

The configuration is in ~/.config/goon/config.yaml and the task definitions are in ~/.config/goon/tasks.yaml.

Command line

CommandPurpose
goon serveRuns the server in the foreground
goon listLists the declared tasks
goon run <task>Runs a task immediately
goon logs <run>Shows the logs of a run
goon pluginsLists 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.

MethodPathPurpose
GET/healthService status
GET/api/v1/tasksList of tasks
POST/api/v1/tasks/{id}/runStarts a task
GET/api/v1/runsRun history (paginated)
GET/api/v1/runs/{id}/logsLive logs (SSE)
GET/api/v1/projectsProjects, missions and sub-tasks
GET/api/v1/pluginsAvailable plugins
curl -H "X-API-Key: $(cat ~/.config/goon/api_key)" \
  http://localhost:18080/api/v1/tasks

Never 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).