Skip to main content

Python-native headless coding-agent backend built around PydanticAI

Project description

just-another-coding-agent

read_when: you need the repo overview, scope, or setup commands

Python-native coding-agent backend built around PydanticAI, with a thin first-party Go terminal UI.

This repo preserves the backend product shape of pi's coding agent while rebuilding it as a clean Python implementation around PydanticAI. It does not inherit pi-mono's monorepo layout, extension ecosystem, or migration burden.

It is intentionally narrow: coding-agent backend first, a thin first-party terminal UI, strict contracts, no fallbacks, and no compatibility glue. PydanticAI should provide as much of the agent machinery as possible; local code exists to define and enforce the coding-agent product contract.

Scope

  • Headless coding-agent runtime
  • Thin first-party terminal UI built on the same runtime
  • File and shell tools
  • Streaming run events
  • Session persistence
  • JSON-over-stdio RPC for non-Python consumers

Non-goals

  • General-purpose agent framework work
  • Backward compatibility layers
  • Legacy migration shims

Project Layout

  • cmd/jaca/ - Go TUI entrypoint
  • internal/jaca/ - Go TUI client, rendering, config, and RPC bridge
  • src/just_another_coding_agent/ - canonical Python package
  • src/just_another_coding_agent/runtime/ - runtime and orchestration entrypoints
  • src/just_another_coding_agent/tools/ - coding tools
  • src/just_another_coding_agent/session/ - session persistence
  • src/just_another_coding_agent/rpc/ - RPC transport
  • src/just_another_coding_agent/contracts/ - public contract helpers and schemas
  • tests/ - unit tests first, e2e later
  • docs/ - scope, architecture, contracts, ADRs, development

Install

For normal use outside a repo checkout, prefer one of these published-package paths:

uv tool install just-another-coding-agent
jaca
uvx --from just-another-coding-agent jaca
  • uv tool install is the persistent daily-use path
  • uvx is the ephemeral no-install path
  • installed builds update explicitly with:
uv tool upgrade just-another-coding-agent

JACA does not auto-upgrade or self-reinstall on startup. Installed uv tool builds may show an optional update prompt with:

  • Update now
  • Skip
  • Skip until next release

When Update now is available, JACA shows the exact upgrade command before it runs it, then asks you to relaunch explicitly after a successful update.

Repo Setup

uv sync --extra dev --extra test
uv run ruff check .
uv run pytest

That default uv sync --extra dev --extra test path is for the Python backend, Harbor, and headless evaluation flows. It stays Go-free.

If you want the interactive TUI too, rebuild the package explicitly with Go enabled:

JACA_BUILD_TUI=1 uv sync --reinstall-package just-another-coding-agent --extra dev --extra test

Run

Launch the long-lived stdio RPC server with explicit backend configuration:

uv run just-another-coding-agent \
  --model <provider:model> \
  --workspace-root /abs/path/to/workspace \
  --sessions-root /abs/path/to/sessions

The process reads one JSON RPC request per stdin line and writes one or more JSON lines to stdout.

Launch the first-party terminal UI:

uv run jaca

In a repo checkout, uv run jaca is the canonical development launcher. The interactive launcher talks to the Python backend over stdio RPC.

In a live repo checkout, uv run jaca prefers go run ./cmd/jaca when go is available so the TUI always reflects current source.

Outside a repo checkout, the installed jaca command launches the installed jaca-go binary.

If uv run jaca says the Go TUI binary is missing, rebuild the environment with:

JACA_BUILD_TUI=1 uv sync --reinstall-package just-another-coding-agent --extra dev --extra test

First Run

The TUI keeps provider, model, and trace preferences in ~/.jaca/config.json.

Inside jaca:

  • /provider ollama selects local Ollama and requires no key
  • /provider openai selects OpenAI and starts masked auth if OPENAI_API_KEY is missing
  • /provider anthropic selects Anthropic and starts masked auth if ANTHROPIC_API_KEY is missing
  • /auth openai or /auth anthropic stores credentials without echoing the secret into the transcript
  • /model <provider:model> switches the active model and aligns provider state to that model
  • /trace off disables tracing
  • /trace local stores spans locally under ~/.jaca/traces/
  • /trace logfire exports spans to Logfire

Tracing is off by default. Local and Logfire tracing both require the optional trace dependency:

uv sync --extra trace

For logfire mode, authenticate first:

uv run logfire auth
uv run logfire projects use <project>

For direct Go TUI development, pass the backend command explicitly:

go run ./cmd/jaca \
  --backend-command-json='["uv","run","python","-m","just_another_coding_agent"]'

Docs

  • docs/README.md
  • docs/goal.md
  • docs/tui.md
  • docs/architecture.md
  • docs/contracts.md
  • docs/grounding.md
  • docs/development.md
  • docs/adr/

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

just_another_coding_agent-0.1.3-py3-none-manylinux_2_17_x86_64.whl (7.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

just_another_coding_agent-0.1.3-cp312-cp312-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.12Windows x86-64

just_another_coding_agent-0.1.3-cp312-cp312-macosx_15_0_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

just_another_coding_agent-0.1.3-cp312-cp312-macosx_14_0_arm64.whl (7.3 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

File details

Details for the file just_another_coding_agent-0.1.3-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for just_another_coding_agent-0.1.3-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 207739210537d27e992809ee8391c955993c1c1b707f18ee843b7cd64aced6b1
MD5 350dbd2b904cac513aba8c6fe9d0f73e
BLAKE2b-256 126c94abc7f866df87dd39ead53e7fe3535e7160d23f86e1983d9dbf4907c3bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for just_another_coding_agent-0.1.3-py3-none-manylinux_2_17_x86_64.whl:

Publisher: release.yml on SahilDahiya/just-another-coding-agent

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

File details

Details for the file just_another_coding_agent-0.1.3-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for just_another_coding_agent-0.1.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e85c74dd37e55c8cfb7610f847cd6791be57347b4d95dc9cb3e02051cd5d6b49
MD5 be47849fcc5c5678b6f4aaa195ba516e
BLAKE2b-256 1d98a2a7ac5500a3c3c77fd90760361babfca7b1ad873f1cd6a557f80d368f75

See more details on using hashes here.

Provenance

The following attestation bundles were made for just_another_coding_agent-0.1.3-cp312-cp312-win_amd64.whl:

Publisher: release.yml on SahilDahiya/just-another-coding-agent

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

File details

Details for the file just_another_coding_agent-0.1.3-cp312-cp312-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for just_another_coding_agent-0.1.3-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 eb14348e6b1b9a1ccb596f22aae31e4d1d7372f272066679568f0350be16633e
MD5 1193adb1ca09bdbfbba402a77303d65a
BLAKE2b-256 cb05dcb26d6c0be78e82c52094ac538628b23f23ac401c6165e283286b7351d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for just_another_coding_agent-0.1.3-cp312-cp312-macosx_15_0_x86_64.whl:

Publisher: release.yml on SahilDahiya/just-another-coding-agent

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

File details

Details for the file just_another_coding_agent-0.1.3-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for just_another_coding_agent-0.1.3-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0a8d2ec65579073e2efe0980ba84b3f86e7f70f96a5cddc73fb950095d86ae51
MD5 5d1ee0687440a9a2a92a8ca3c51e8697
BLAKE2b-256 c8f321b3aa3c20ae6a85fa3e22c8643f620ac6172618d1ac6e28f962106e57cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for just_another_coding_agent-0.1.3-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: release.yml on SahilDahiya/just-another-coding-agent

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