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.3.tar.gz (392.0 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.3-py3-none-any.whl (395.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: atac-1.0.3.tar.gz
  • Upload date:
  • Size: 392.0 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.3.tar.gz
Algorithm Hash digest
SHA256 93cb2d6b0ee3efba1016e6f7d266402ca86675d8a50ad6c855a45a70a5e8d2fa
MD5 8dca871bfff10951a3b4aae47f993450
BLAKE2b-256 5b76b233034bc201d2ea91069f63463b0d6e36b2b4458bb09a0987e3230f736d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: atac-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 395.9 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8d4f368aba754128893065e2fd3c22a345349d720cdb2220c71943587e9bba69
MD5 99583d87ae5021238b86a064fcd4b9fb
BLAKE2b-256 ee803fd4f6d66321c5ba13907cad4c9aa71870bd455348379f3ec92c1825e192

See more details on using hashes here.

Provenance

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