Catalog PyPI
Back to packageRELEASE DETAILS

0.1.4

PyPI

adk-coder

AI coding agent powered by Google ADK — multi-agent orchestration, filesystem tools, and persistent sessions

Published9 Mar 2026
Direct dependencies15
Transitive dependenciesNot calculated

README

Version 0.1.4 documentation

adk-coder

adk-coder is a powerful, agentic development tool built on the Google ADK (Agent Development Kit). It provides a terminal-based interface (TUI) for interacting with Gemini models that have direct access to your local filesystem and shell.

🌟 Inspiration

This project is inspired by several leading agentic coding tools:

  • gemini-cli: For its clean architecture and focus on Google's Gemini models.
  • Claude Code: For its robust, phase-based orchestration and multi-agent patterns.
  • Nano-Claw: For its "Integrity-First" approach to code modification and file handling.

🚀 Key Features

  • Interactive TUI: A rich, responsive chat interface built with Textual.
  • Filesystem Tools: Built-in capabilities to ls, cat, grep, write, and edit files.
  • Shell Integration: Execute bash commands with user-approved security guards.
  • Skill System: Extensible via Markdown-based "Skills" that define custom instructions and tool usage. Includes high-level orchestration like feature-dev for guided software engineering.
  • Multi-Agent Orchestration: Specialized sub-agents (code-explorer, code-architect, code-reviewer) can be launched to handle specific phases of a task without polluting the main conversation context.
  • Persistent Sessions: Automatically remembers project context and chat history using SQLite.
  • Security First: Granular permission modes (ask, auto, plan) to control tool execution.
  • Project Awareness: Automatically maps workspace roots to unique IDs for isolated session management.

🛠️ How It Works

adk-coder leverages Google ADK to orchestrate the agentic loop.

  1. Orchestration: Uses the Runner and LlmAgent from ADK to manage the conversation flow and tool execution.
  2. Policy Engine: A custom security plugin intercepts every tool call, checking it against a policy (e.g., read-only tools are allowed, while bash or write_file require a UI confirmation).
  3. Context Management: It detects the project root (via .git, pyproject.toml, etc.) and manages history in a global SQLite database at ~/.adk/.

🚥 Getting Started

Prerequisites

Installation

# Clone the repository
git clone https://github.com/your-repo/adk-coder.git
cd adk-coder

# Install dependencies (using uv is recommended)
uv sync

Configuration

Set your API key in a .env file or export it:

export GOOGLE_API_KEY="your_api_key_here"

Usage

Launch the interactive TUI:

adk-coder

Execute a one-off task:

adk-coder chat "Review the current directory and list all python files" --print

Manage global settings:

adk-coder config set default_model gemini-3-flash-preview

🏗️ Development

This project uses a "Scripts to Rule Them All" pattern for development tasks:

  • ./script/bootstrap: Install dependencies and set up the environment.
  • ./script/test: Run the test suite (pytest).
  • ./script/lint: Run linting checks (ruff).

📄 License

This project is licensed under the Apache 2.0 License.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 15

Native requirements
15 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
python-dotenv
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
python-dotenv>=1.0.0runtime
google-adk
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
google-adk>=1.25.1runtime
click
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
click>=8.1.7runtime
pyyaml
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
pyyaml>=6.0runtime
rich
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
rich>=13.7.0runtime
textual
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
textual>=0.47.1runtime
portalocker
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
portalocker>=2.8.2runtime
psutil
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
psutil>=5.9.0runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
pytest>=8.4.2; extra == "dev"runtime
pytest-cov
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
pytest-cov>=6.0.0; extra == "dev"runtime
ty
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
ty>=0.0.18; extra == "dev"runtime
ruff
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
ruff>=0.8.1; extra == "dev"runtime
pre-commit
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
pre-commit>=4.0.1; extra == "dev"runtime
coverage
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
coverage>=7.13.4; extra == "dev"runtime
pytest-asyncio
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.14",
  "evaluation": "NOT_EVALUATED"
}
pytest-asyncio>=1.3.0; extra == "dev"runtime

Distribution files

2 collected
adk_coder-0.1.4-py3-none-any.whl

bdist_wheel · 68.62 KB · Python py3

Source file
adk_coder-0.1.4.tar.gz

sdist · 65.25 KB · Python source

Source file

Repository

ACCESSIBLE
allenporter/adk-coder

Shared repository data · GitHub

License detected in repository
Apache-2.0
License branch / ref
main
Last push
22 Oct 2026
Archived
No
Contributor identities
— · partial collection

Public sponsor counts have not been collected. These signals belong to the repository owner.

Downloads & popularity

0count
Gauge · observed snapshots22 Oct 2026
10.50
2026-10-22: 0 · observed 2026-10-22T21:40:10.6058428Z
22 Oct22 Oct

github · 1 observations shown. Missing days are unknown.

View observed values
Date / source periodValueObserved at
2026-10-2202026-10-22T21:40:10.6058428Z

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:36 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:aeeb7fe64e94e997a5642ffc2ce5efa75c681845ef3fcabf1b1e2e89de2eb163

Other collected versions

View all collected versions →