Skip to main content

Single-agent task runner for hardened Podman containers

Project description

terok-executor

terok-executor

PyPI License: Apache-2.0 REUSE status Quality Gate Status

One command to run an AI coding agent inside a hardened, rootless Podman container.

terok-executor builds the container, launches the agent against the directory you point it at, and keeps real credentials on the host. Use it on its own as a CLI, or import its AgentRunner from Python when you want library-grade control.

terok ecosystem — terok-executor sits between project orchestration and the hardened runtime

Quick start

pip install terok-executor
terok-executor run claude ~/my-workspace

The first run interactively offers any missing prerequisites — sandbox services, container images, agent credentials. Mandatory items (services, images) block the launch if declined; optional ones (SSH key, auth) print the consequence and proceed.

Individual steps would be:

terok-executor setup                               # install sandbox services + build base images
terok-executor auth claude                         # authenticate (OAuth or API key)
terok-executor run claude <dir> -p "Fix the bug"   # run the agent with an initial prompt

Use as a library

from terok_executor import AgentRunner

runner = AgentRunner()
runner.run_headless(
    agent="claude",
    repo=".",
    prompt="Fix the failing test in test_auth.py",
    max_turns=25,
)

AgentRunner exposes four launch methods — run_headless, run_interactive, run_web, run_tool — all with the same hardening guarantees.

Supported agents

Agent Auth Description
Claude Code OAuth*, API key Anthropic Claude Code
Codex OAuth*, API key OpenAI Codex CLI
Vibe API key Mistral Vibe
OpenCode API key Generic LLM endpoint driver — bundled defaults for Helmholtz Blablador, KISSKI AcademicCloud, and your own endpoint
gh OAuth, API key GitHub CLI
glab API key GitLab CLI
CodeRabbit API key CodeRabbit (sidecar tool)
SonarCloud API key SonarCloud scanner (sidecar tool)

* Claude and Codex OAuth are experimental, and support must be explicitly allowed in the config file.

terok-executor agents lists the live roster (add --all to include the tool entries).

Where it sits in the stack

terok-executor is the per-task layer. Above it, terok composes many concurrent runs across many projects. Below it, terok-executor delegates the host-side security boundary (terok-sandbox): the credential vault, the git gate, the egress firewall hooks, the per-container supervisor lifecycle (OCI createRuntime/poststop hooks).

Commands

Command Description
run Launch an agent (headless, interactive, or web)
setup Bootstrap sandbox services + container images
uninstall Remove sandbox services + container images
auth Authenticate a provider
agents List the agent roster
build Build base + agent images explicitly
run-tool Run a sidecar tool (CodeRabbit, SonarCloud)
list List running containers
stop Stop a running container
show-config Print the effective SandboxConfig as YAML (diffable across orchestrators)
vault Vault management (start, stop, status, install, routes)

Config override

Two top-level flags (precede the subcommand, like docker --config):

  • --config PATH — read this config.yml instead of the layered system/user paths (sets TEROK_CONFIG_FILE for the invocation).
  • --raw — ignore any config.yml; use sandbox/executor dataclass defaults only.

Higher-layer orchestrators (such as terok) typically construct a SandboxConfig from their own resolution chain and pass it into the executor as a library; the public expectation is that, for the fields they own in config.yml, the resulting sub-environment matches what standalone terok-executor would produce against the same file. Use show-config on both sides to verify.

Development

See the Developer Guide.

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

terok_executor-0.2.1.tar.gz (218.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

terok_executor-0.2.1-py3-none-any.whl (286.1 kB view details)

Uploaded Python 3

File details

Details for the file terok_executor-0.2.1.tar.gz.

File metadata

  • Download URL: terok_executor-0.2.1.tar.gz
  • Upload date:
  • Size: 218.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for terok_executor-0.2.1.tar.gz
Algorithm Hash digest
SHA256 b2d4c84e2df8fbdacc96f2cf5793ac687fc15174fd2b34243353e443acc2f251
MD5 e1b3e9cbbb9a6bbf3605ef63c76481fb
BLAKE2b-256 842cc9707bc3785107c3d3d4a191993897e19f60d779cc27c43b80c7dcff7ff3

See more details on using hashes here.

Provenance

The following attestation bundles were made for terok_executor-0.2.1.tar.gz:

Publisher: release.yml on terok-ai/terok-executor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file terok_executor-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: terok_executor-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 286.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for terok_executor-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 166fc941803e86a52ae48bec71af752236a0bd0334f82861522898554e5880a5
MD5 cc60fdc5e15ade9520d47d87d8e513ac
BLAKE2b-256 8e5c9b6a65a5931802d27896f7a83539cafe7255cbfcbcd1564ee164c05e016f

See more details on using hashes here.

Provenance

The following attestation bundles were made for terok_executor-0.2.1-py3-none-any.whl:

Publisher: release.yml on terok-ai/terok-executor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page