Skip to main content
When a pylon job fires, Pylon spins up a fresh Docker container for the configured agent, mounts the workspace, injects the prompt, and lets the agent work. Each job gets its own isolated container — the agent has no access to previous jobs or the host filesystem beyond the mounted workspace. Pylon currently supports two agents: Claude Code and OpenCode. You configure an agent under the agent key in pylon.yaml. If you omit the agent block, Pylon falls back to the global defaults in ~/.pylon/config.yaml.

Agent fields

Claude Code

Claude Code (type: claude) is Anthropic’s agentic coding tool. It supports two auth methods:

OpenCode

OpenCode (type: opencode) is a multi-provider coding agent with a built-in free tier (Zen) that requires no API key.
OpenCode’s Zen mode uses a built-in model — no API key or provider setting required.

Prompt templating

The prompt field supports Go template syntax. Use {{ .body.field }} to inject values from the webhook payload into the prompt at runtime.
For GitHub webhooks, you can reference fields like {{ .body.pull_request.title }}, {{ .body.pull_request.head.ref }}, or {{ .body.repository.clone_url }}.
Use pylon test <name> to send a sample payload and preview how the prompt renders before relying on it in production.

Timeout

The timeout field sets the maximum time the agent container is allowed to run. If the agent exceeds this limit, Pylon stops the container and records the job as timed out.
  • Default: 15m
  • Format: Go duration string — 10m, 30m, 1h, etc.
You can also set a global default timeout in ~/.pylon/config.yaml under docker.default_timeout. The per-pylon timeout takes priority.

Additional environment variables

Use env to inject arbitrary environment variables into the agent container:

Coming soon

The following agents are planned but not yet available:
  • Codex (OpenAI)
  • Aider