Skip to main content

Graph-first tool runtime for agent workflows.

Project description

中文

ATaC 1.0.0 是一个面向 Agent 工作流的工具运行时,帮助 Agent 通过编排图代码复用资产。

它主要提供三类能力:

  • 工具注册:统一注册 Agent 内置工具和 MCP 工具
  • 工具调用:在 graph 节点里通过 tool_call(...) 按名字调用工具
  • Python SDK:让 Agent 在 graph 代码里直接调用已注册工具

你可以把常用能力沉淀为已注册工具,再在新的图里直接复用它们,把任务经验持续积累成可维护的工作流代码。

🛠 核心能力

  • Agent 工具注册:把 Agent 内置工具统一注册到 AtacService
  • MCP 工具注册:把外部 MCP 工具接入同一套工具空间中复用。
  • 图代码调用 SDK:在 graph 节点里直接使用 get_service().tool_call(...)
  • 资产复用导向:Agent 通过编排图代码,把已有工具资产重新组织成新的工作流。
  • LangGraph 编排友好:直接在 LangGraph graph 代码中组合和复用这些工具资产。

🤖 最小接入示例

1. 注册 Agent 内置工具

from atac import AtacService, set_service
from atac.wrapper.langgraph import tool
import atac.subprocess as subprocess

service = AtacService()
set_service(service)


@tool(name="bash")
def bash_tool(command: str) -> str:
    completed = subprocess.run(
        command,
        shell=True,
        capture_output=True,
        text=True,
    )
    if completed.returncode != 0:
        raise RuntimeError(completed.stderr.strip() or "bash failed")
    return completed.stdout.rstrip("\n")


def get_service() -> AtacService:
    return service

2. 在 graph 代码里调用 ATaC SDK

from langgraph.graph import START, END, StateGraph

from atac import get_service


def run_bash(state: dict) -> dict:
    output = get_service().tool_call("bash", {"command": f"echo {state['who']}"})
    return {"output": output}


def build_graph():
    graph = StateGraph(dict)
    graph.add_node("run_bash", run_bash)
    graph.add_edge(START, "run_bash")
    graph.add_edge("run_bash", END)
    return graph.compile()

🚀 快速开始

1. 安装

uv tool install .

2. Python SDK

from myapp.bootstrap import get_service

service = get_service()
result = service.run_graph("myapp.graphs:build_graph", {"who": "mob"})

3. 示例


English

ATaC 1.0.0 is a tool runtime for agent workflows, helping agents reuse assets through graph-based workflow code.

It focuses on:

  • built-in agent tool registration
  • MCP tool registration
  • named tool invocation from graph nodes
  • a Python SDK for calling registered tools from graph code

You can keep reusable capabilities behind registered tools, then compose new workflows by calling those assets directly from graph code.

🛠 Key Features

  • Built-In Agent Tool Registration: Register agent-native tools on AtacService.
  • MCP Tool Registration: Bring external MCP tools into the same reusable tool space.
  • SDK Calls from Graph Code: Graph nodes can call get_service().tool_call(...).
  • Asset Reuse Through Graphs: Agents build new workflows by composing graph code around existing registered tool assets.
  • LangGraph-Friendly Composition: Reuse those assets directly inside LangGraph workflow code.

🤖 Minimal Integration

1. Register Built-In Agent Tools

from atac import AtacService, set_service
from atac.wrapper.langgraph import tool
import atac.subprocess as subprocess

service = AtacService()
set_service(service)


@tool(name="bash")
def bash_tool(command: str) -> str:
    completed = subprocess.run(
        command,
        shell=True,
        capture_output=True,
        text=True,
    )
    if completed.returncode != 0:
        raise RuntimeError(completed.stderr.strip() or "bash failed")
    return completed.stdout.rstrip("\n")


def get_service() -> AtacService:
    return service

2. Call the ATaC SDK from Graph Code

from langgraph.graph import START, END, StateGraph

from atac import get_service


def run_bash(state: dict) -> dict:
    output = get_service().tool_call("bash", {"command": f"echo {state['who']}"})
    return {"output": output}


def build_graph():
    graph = StateGraph(dict)
    graph.add_node("run_bash", run_bash)
    graph.add_edge(START, "run_bash")
    graph.add_edge("run_bash", END)
    return graph.compile()

🚀 Quick Start

1. Install

uv tool install .

2. Run via Python SDK

from myapp.bootstrap import get_service

service = get_service()
result = service.run_graph("myapp.graphs:build_graph", {"who": "mob"})

3. Examples

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

atac-1.0.0.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

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

atac-1.0.0-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

Details for the file atac-1.0.0.tar.gz.

File metadata

  • Download URL: atac-1.0.0.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for atac-1.0.0.tar.gz
Algorithm Hash digest
SHA256 46a4fefb49f6a7580e5c3cb24384c416be17a02489144a761d89a0a89732ec84
MD5 ee952a3ad47f2e5a6833305a3d13a851
BLAKE2b-256 7409385cdac498adb89f806096e418e01a5e19761851765a2d9feb8ac486fe02

See more details on using hashes here.

Provenance

The following attestation bundles were made for atac-1.0.0.tar.gz:

Publisher: cd.yml on ATaC-team/ATaC

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

File details

Details for the file atac-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: atac-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 16.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for atac-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3b5b8fbfc9ec48ba9e59f6e80b4b3952a69416de5c084dff7c1d08d3b35b82f5
MD5 714979575071f1f5426601b2d93a03c2
BLAKE2b-256 b871317c787184696e121b97f0054348246f86e4b36ba6e4a22542a4a926d56c

See more details on using hashes here.

Provenance

The following attestation bundles were made for atac-1.0.0-py3-none-any.whl:

Publisher: cd.yml on ATaC-team/ATaC

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