Runs the prebuilt Platform Server and UI images via Docker Compose (not a development environment). For development workflows, see agynio/platform.
Prereqs: Docker with Compose v2 enabled and access to the host Docker socket (/var/run/docker.sock).
For local development you can cd agyn && docker compose up -d without creating an env file; the stack defaults DOCKER_RUNNER_SHARED_SECRET to change-me so it just works out of the box.
To override the secret (recommended for team or shared environments), copy agyn/.env.example to agyn/.env and set a long random value:
cp agyn/.env.example agyn/.env
echo "DOCKER_RUNNER_SHARED_SECRET=$(openssl rand -hex 32)" >> agyn/.envgit clone --recurse-submodules https://github.com/agynio/bootstrap.git
cd bootstrap/agyn
docker compose up -d# switch graph template
cd bootstrap/graph
git fetch origin
git checkout main
git reset --hard origin/example/team
# restart services
cd ../agyn
docker compose up -d --force-recreate
# switch graph template
cd bootstrap/graph
git fetch origin
git checkout main
git reset --hard origin/example/solo-agent
# restart services
cd ../agyn
docker compose up -d --force-recreate
Open http://localhost:2496 in your browser.
Notes:
agyn/docker-compose.yamlis the compose file, and thegraphsubmodule is required.- The stack now includes the
docker-runnerservice, which brokers privileged Docker access for the platform-server. Ensure the host socket is available. The default shared secret ischange-me; overrideDOCKER_RUNNER_SHARED_SECRETinagyn/.envfor shared deployments.
Bootstrap now ships a pull-through Docker registry cache (registry-mirror service) backed by registry:2 in proxy mode. The service stays on the internal agents_stack network by default and is only used when the host Docker daemon points at it.
-
Opt-in loopback publish (optional):
cp agyn/docker-compose.override.yaml.example agyn/docker-compose.override.yaml cd agyn docker compose up -d registry-mirrorThis publishes
127.0.0.1:5000->5000while leaving other services unchanged. Remove the override to return to internal-only operation. -
Configure the host Docker daemon (
/etc/docker/daemon.json):{ "registry-mirrors": ["http://127.0.0.1:5000"] }Restart Docker afterwards (e.g.
sudo systemctl restart docker). This is required because bootstrap services reuse the host Docker socket. -
Containerd note: if you run containerd directly, add the mirror endpoint to
/etc/containerd/config.tomland restart containerd:[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["http://127.0.0.1:5000"]
-
Validate the mirror:
docker compose ps registry-mirrorshould showhealthyonce the service starts.curl -fsSL http://127.0.0.1:5000/v2/returns{}.- Pull an image twice (e.g.
docker pull alpine:3.19twice) and observedocker compose logs -f registry-mirrorshowing cache hits on the second run.
-
Rollback: stop the service (
docker compose stop registry-mirror && docker compose rm -f registry-mirror), remove the loopback override, delete the mirror entry fromdaemon.json/containerd config, and restart Docker/containerd. Existing pulls will then bypass the cache again.
The mirror only accelerates pulls when the host daemon is configured as above. Containers inside the stack do not access it directly otherwise.