make prepare(sync deps for all workspace packages and install git hooks)make formatmake checkmake testmake ai-testmake build/make build-bin
If running tools directly, use uv run ....
axe is a powerful agent for software engineering workflows. it supports an interactive shell UI, acp server mode for ide integrations, and mcp tool loading(suitable for people who are not vibe coders, we hate slop)
- Python 3.12+ (tooling configured for 3.14)
- CLI framework: Typer
- Async runtime: asyncio
- LLM framework: kosong
- MCP integration: fastmcp
- Logging: loguru
- Package management/build: uv + uv_build; PyInstaller for binaries
- Tests: pytest + pytest-asyncio; lint/format: ruff; types: pyright + ty
- CLI entry:
src/axe_cli/cli.py(Typer) parses flags (UI mode, agent spec, config, MCP) and routes intoAxeCLIinsrc/axe_cli/app.py. - App/runtime setup:
AxeCLI.createloads config (src/axe_cli/config.py), chooses a model/provider (src/axe_cli/llm.py), builds aRuntime(src/axe_cli/soul/agent.py), loads an agent spec, restoresContext, then constructsAxeSoul. - Agent specs: YAML under
src/axe_cli/agents/loaded bysrc/axe_cli/agentspec.py. Specs canextendbase agents, select tools by import path, and define fixed subagents. System prompts live alongside specs; builtin args includeAXE_NOW,AXE_WORK_DIR,AXE_WORK_DIR_LS,AXE_AGENTS_MD,AXE_SKILLS(this file is injected viaAXE_AGENTS_MD). - Tooling:
src/axe_cli/soul/toolset.pyloads tools by import path, injects dependencies, and runs tool calls. Built-in tools live insrc/axe_cli/tools/(shell, file, web, todo, multiagent, dmail, think). MCP tools are loaded viafastmcp; CLI management is insrc/axe_cli/mcp.pyand stored in the share dir. - Subagents:
LaborMarketinsrc/axe_cli/soul/agent.pymanages fixed and dynamic subagents. The Task tool (src/axe_cli/tools/multiagent/) spawns them. - Core loop:
src/axe_cli/soul/axesoul.pyis the main agent loop. It accepts user input, handles slash commands (src/axe_cli/soul/slash.py), appends toContext(src/axe_cli/soul/context.py), calls the LLM (kosong), runs tools, and performs compaction (src/axe_cli/soul/compaction.py) when needed. - Approvals:
src/axe_cli/soul/approval.pymediates user approvals for tool actions; the soul forwards approval requests overWirefor UI handling. - UI/Wire:
src/axe_cli/soul/run_soulconnectsAxeSoulto aWire(src/axe_cli/wire/) so UI loops can stream events. UIs live insrc/axe_cli/ui/(shell/print/acp/wire). - Shell UI:
src/axe_cli/ui/shell/handles interactive TUI input, shell command mode, and slash command autocomplete; it is the default interactive experience. - Slash commands: Soul-level commands live in
src/axe_cli/soul/slash.py; shell-level commands live insrc/axe_cli/ui/shell/slash.py. The shell UI exposes both and dispatches based on the registry. Standard skills register/skill:<skill-name>and loadSKILL.mdas a user prompt; flow skills register/flow:<skill-name>and execute the embedded flow.
src/axe_cli/app.py:AxeCLI.create(...)andAxeCLI.run(...)are the main programmatic entrypoints; this is what UI layers use.src/axe_cli/soul/agent.py:Runtime(config, session, builtins),Agent(system prompt + toolset), andLaborMarket(subagent registry).src/axe_cli/soul/axesoul.py:AxeSoul.run(...)is the loop boundary; it emits Wire messages and executes tools viaAxeToolset.src/axe_cli/soul/context.py: conversation history + checkpoints; used by DMail for checkpointed replies.src/axe_cli/soul/toolset.py: load tools, run tool calls, bridge to MCP tools.src/axe_cli/ui/*: shell/print/acp frontends; they consumeWiremessages.src/axe_cli/wire/*: event types and transport used between soul and UI.
src/axe_cli/agents/: built-in agent YAML specs and promptssrc/axe_cli/prompts/: shared prompt templatessrc/axe_cli/soul/: core runtime/loop, context, compaction, approvalssrc/axe_cli/tools/: built-in toolssrc/axe_cli/ui/: UI frontends (shell/print/acp/wire)src/axe_cli/acp/: ACP server componentspackages/kosong/,packages/kaos/: workspace deps- Kosong is an LLM abstraction layer designed for modern AI agent applications. It unifies message structures, asynchronous tool orchestration, and pluggable chat providers so you can build agents with ease and avoid vendor lock-in.
- PyKAOS is a lightweight Python library providing an abstraction layer for agents to interact with operating systems. File operations and command executions via KAOS can be easily switched between local environment and remote systems over SSH.
tests/,tests_ai/: test suitesklips: Axe Code CLI Improvement Proposals
- Python >=3.12 (ty config uses 3.14); line length 100.
- Ruff handles lint + format (rules: E, F, UP, B, SIM, I); pyright + ty for type checks.
- Tests use pytest + pytest-asyncio; files are
tests/test_*.py. - CLI entry points:
axe->src/axe_cli/cli.py. - User config:
~/.axe/config.toml; logs, sessions, and MCP config live in~/.axe/.
Conventional Commits format:
<type>(<scope>): <subject>
Allowed types:
feat, fix, test, refactor, chore, style, docs, perf, build, ci, revert.
- Ensure
mainis up to date (pull latest). - Create a release branch, e.g.
bump-0.68orbump-pykaos-0.5.3. - Update
CHANGELOG.md: rename[Unreleased]to[0.68] - YYYY-MM-DD. - Update
pyproject.tomlversion. - Run
uv syncto alignuv.lock. - Commit the branch and open a PR.
- Merge the PR, then switch back to
mainand pull latest. - Tag and push:
git tag 0.68orgit tag pykaos-0.5.3git push --tags
- GitHub Actions handles the release after tags are pushed.