Skip to main content

ACP-compliant coding agent and reference client.

Project description

🍏 Isaac ACP 🍏 (isaac-acp)

PyPI version PyPI - Python Version License: MIT Lint Tests

Isaac is an ACP-compliant coding agent and reference CLI client.

Since Newton discovered gravity, everything's been going downhill.

Installation

Install Isaac as a uv tool:

uv tool install isaac-acp

Optional Harness experiments are not installed by default:

uv tool install "isaac-acp[harness]" --force

Quickstart

Run the agent:

isaac

Run the bundled client against the bundled agent without creating a project checkout:

uv tool run --from isaac-acp python -m isaac.client isaac

Or when developing from source:

uv run python -m isaac.client uv run isaac

Configuration

Isaac loads environment variables from:

  1. <platform config dir>/isaac/.env (via platformdirs; Linux example: ~/.config/isaac/.env)

Common variables:

  • OPENROUTER_API_KEY (or provider-specific model keys)
  • ISAAC_ACP_STDIO_BUFFER_LIMIT_BYTES (optional ACP stdio buffer override)
  • ISAAC_SHELL_ALLOWLIST (optional comma/newline-separated regex allowlist for run_command)
  • ISAAC_SHELL_DENYLIST (optional comma/newline-separated regex denylist for run_command)
  • ISAAC_COMMAND_ENV_DENYLIST (optional comma/newline-separated regexes for additional environment variable names to remove from command subprocesses)

Features

  • ACP 0.11 session config options for mode/model selection
  • Pydantic AI 2.x capability-based agent assembly
  • Prompt turns, tool calls, filesystem and terminal ACP flows
  • Workspace-contained filesystem tools with binary-file guards, protected write paths, and optional SHA-256 write preconditions
  • ACP-backed approval flow for run_command with an experimental Pydantic AI capability bridge
  • Optional Pydantic AI Harness CodeMode experiments via ISAAC_HARNESS_CODE_MODE=1 and the harness extra
  • Interactive client slash commands (/mode, /model, /status, /usage)
  • MCP server config forwarding from the client to the agent

Command environment security

run_command inherits the normal development environment but removes variables whose names look secret-bearing, including names containing TOKEN, SECRET, PASSWORD, PRIVATE, CREDENTIAL, AUTH, COOKIE, API_KEY, or ACCESS_KEY. Matching is case-insensitive and substring-based. For example, SSH_AUTH_SOCK is removed because its name contains AUTH, so commands run by Isaac do not automatically inherit the caller's SSH agent.

ISAAC_COMMAND_ENV_DENYLIST can add more variable-name regular expressions to remove. It cannot restore names removed by the built-in policy. Run authenticated Git operations outside agent-executed commands, or provide only narrowly scoped credentials through an explicitly reviewed mechanism.

These checks reduce accidental credential exposure, but they do not make run_command a sandbox.

Development

uv sync
uv run ruff format .
uv run ruff check .
uv run mypy src tests
uv run pytest
uv build --wheel --sdist

Development note: uv sync installs the default dev dependency group, so local check commands such as uv run pytest, uv run ruff check ., and uv run mypy work after a normal sync. The test extra is kept for packaging and CI compatibility.

Optional Harness experiments

Install the optional Harness extra when experimenting with Pydantic AI Harness integrations:

uv sync --extra harness

Optional Harness tools are disabled by default. FileSystem and Shell experiments are exposed with prefixed harness_* tool names so they do not replace Isaac's ACP-compatible tools:

ISAAC_HARNESS_FILESYSTEM=1 uv run isaac
ISAAC_HARNESS_SHELL=1 uv run isaac
ISAAC_HARNESS_CODE_MODE=1 uv run isaac

Review approval and sandbox behavior before using Harness tools with mutating operations.

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

isaac_acp-0.4.0.tar.gz (440.8 kB view details)

Uploaded Source

Built Distribution

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

isaac_acp-0.4.0-py3-none-any.whl (322.3 kB view details)

Uploaded Python 3

File details

Details for the file isaac_acp-0.4.0.tar.gz.

File metadata

  • Download URL: isaac_acp-0.4.0.tar.gz
  • Upload date:
  • Size: 440.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for isaac_acp-0.4.0.tar.gz
Algorithm Hash digest
SHA256 1604374edd48e0bd03e7d89002655af90cc7342aded8ba4f69ea063171f87a33
MD5 75492bfad508a94adc2bebeb249c99fe
BLAKE2b-256 1df713c5149f23aab0d5ccff1bd78f40119095c364997ab7a025aa088ad1d0c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for isaac_acp-0.4.0.tar.gz:

Publisher: publish.yml on gbtami/isaac

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

File details

Details for the file isaac_acp-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: isaac_acp-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 322.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for isaac_acp-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5b2f32bb07cee58abe3cb63a80dac6d7a49b1c9b62b12552b0ff4bdfaa2b07a3
MD5 25668f781e06693d695c3c7d40958e2c
BLAKE2b-256 8678a65e85cf09c51cdffef34a7610760780cee3be574cf82136d65d27b53eec

See more details on using hashes here.

Provenance

The following attestation bundles were made for isaac_acp-0.4.0-py3-none-any.whl:

Publisher: publish.yml on gbtami/isaac

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