Skip to main content

Core filesystem and execution tools for Axio

Project description

axio-tools-local

PyPI Python License: MIT

Core filesystem and shell tool handlers for axio.

Gives your agent the ability to read, write, and patch files, run shell commands, execute Python snippets, and browse directory trees - the essential toolkit for a coding assistant.

Tools

Function Entry point Description
shell shell Run any shell command with configurable timeout, cwd, and stdin
run_python run_python Execute a Python snippet in a subprocess
read_file read_file Read a file, optionally with line range
write_file write_file Write or overwrite a file
patch_file patch_file Replace a range of lines in an existing file (1-indexed, both ends inclusive)
list_files list_files List files in a directory

Installation

pip install axio-tools-local

Usage

Standalone (without TUI)

from axio.agent import Agent
from axio.context import MemoryContextStore
from axio_transport_openai import OpenAITransport, OPENAI_MODELS
from axio_tools_local.shell import shell
from axio_tools_local.read_file import read_file
from axio_tools_local.write_file import write_file
from axio_tools_local.list_files import list_files
from axio.tool import Tool

tools = [
    Tool(name="shell",      handler=shell),
    Tool(name="read_file",  handler=read_file),
    Tool(name="write_file", handler=write_file),
    Tool(name="list_files", handler=list_files),
]

agent = Agent(
    system="You are a coding assistant with access to the local filesystem.",
    tools=tools,
    transport=OpenAITransport(api_key="sk-...", model=OPENAI_MODELS["gpt-4o"]),
)

Via plugin (with axio-tui)

pip install "axio-tui[local]"
uv run axio   # shell, read_file, write_file, patch_file, list_files, run_python appear automatically

Tool details

shell

import asyncio
from axio_tools_local.shell import shell

asyncio.run(shell(command="echo hello", cwd=".", timeout=30))
asyncio.run(shell(command="cat", stdin="hello"))

Parameters: command: str, timeout: int = 5, cwd: str = ".", stdin: str | None = None

patch_file

Replaces a range of lines in an existing file - safe for surgical edits without rewriting the whole file. Lines are 1-indexed and both from_line and to_line are inclusive. To insert without deleting any existing lines, set to_line = from_line - 1. Always read the file first with line_numbers=True to get correct line numbers.

import asyncio
import tempfile, os
from axio_tools_local.patch_file import patch_file

with tempfile.NamedTemporaryFile(mode="w", suffix=".py", delete=False) as f:
    f.write("line1\nline2\nline3\n")
    name = f.name

# Replace line 2
asyncio.run(patch_file(file_path=name, from_line=2, to_line=2, content="replaced\n"))
os.unlink(name)

Parameters: file_path: str, from_line: int, to_line: int, content: str, mode: int = 0o644

list_files

import asyncio
from axio_tools_local.list_files import list_files

asyncio.run(list_files(directory="."))

run_python

import asyncio
from axio_tools_local.run_python import run_python

asyncio.run(run_python(code="import sys; print(sys.version)"))

Plugin registration

[project.entry-points."axio.tools"]
shell      = "axio_tools_local.shell:shell"
run_python = "axio_tools_local.run_python:run_python"
write_file = "axio_tools_local.write_file:write_file"
patch_file = "axio_tools_local.patch_file:patch_file"
read_file  = "axio_tools_local.read_file:read_file"
list_files = "axio_tools_local.list_files:list_files"

Part of the axio ecosystem

axio · axio-tools-mcp · axio-tools-docker · axio-tui

License

MIT

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

axio_tools_local-0.9.8.tar.gz (43.7 kB view details)

Uploaded Source

Built Distribution

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

axio_tools_local-0.9.8-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file axio_tools_local-0.9.8.tar.gz.

File metadata

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

File hashes

Hashes for axio_tools_local-0.9.8.tar.gz
Algorithm Hash digest
SHA256 405266c855392ee3e255e44220f01d7ba16811a0ae51fc14deb4b20ddd061aea
MD5 dffac0ad8fa6934bb7c7a04c1ded9635
BLAKE2b-256 6e3a21616d8a2d5afb8f1bff523067b4e474b6f4cb393fb383521a8ac89fd95c

See more details on using hashes here.

Provenance

The following attestation bundles were made for axio_tools_local-0.9.8.tar.gz:

Publisher: publish.yml on mosquito/axio-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 axio_tools_local-0.9.8-py3-none-any.whl.

File metadata

File hashes

Hashes for axio_tools_local-0.9.8-py3-none-any.whl
Algorithm Hash digest
SHA256 42fd0e55f7c92a7bbf8b921c95ba50027449f94b7079563bbf80f2a25f62b4a3
MD5 c411b66190b09b23556db65caa515e9c
BLAKE2b-256 16cbada63bcd776401b48dc9c935e22d91ca0dcc5e26e069e6f74947b7ceec20

See more details on using hashes here.

Provenance

The following attestation bundles were made for axio_tools_local-0.9.8-py3-none-any.whl:

Publisher: publish.yml on mosquito/axio-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