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 atac

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, using raw tool names by default.
  • 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 atac

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.2.tar.gz (391.7 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.2-py3-none-any.whl (395.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: atac-1.0.2.tar.gz
  • Upload date:
  • Size: 391.7 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.2.tar.gz
Algorithm Hash digest
SHA256 0b5bebc51bd8fe6f2ed25ddb7423e80313d4d865127c23fa581750e90b259fe7
MD5 7d2ff3b41f74c5b236fae5fa8e877196
BLAKE2b-256 838d145139ebe92174f0bd5006af72a85b269d7aa2da2c7f928b81727478ffe4

See more details on using hashes here.

Provenance

The following attestation bundles were made for atac-1.0.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: atac-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 395.5 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b74560e0d302f300010506a4d22b1dc40ec474002d87cf287fb17e59660c49ac
MD5 f9ede6fa0b57fa7a63d8fe78596dcd05
BLAKE2b-256 59497d69f9ad91625a8b945a34934fb24bf39591228aa4d7b9a42d788133a7f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for atac-1.0.2-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