Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
161 lines (154 loc) · 6.57 KB
/
Copy pathpyproject.toml
File metadata and controls
161 lines (154 loc) · 6.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
[build-system]
requires = ["setuptools>=68.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "autonet-computer"
version = "0.8.0"
description = "Decentralized AI alignment network with an agent framework"
requires-python = ">=3.11"
license = "AGPL-3.0-or-later"
readme = "README.md"
authors = [
{name = "ATN Contributors"},
]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
]
dependencies = [
# ATN core (agent framework + full-node participation). A plain
# `pip install autonet-computer` gives a functional node: agent
# the agent loop, chain registration, and substrate/p2p close. Only the
# native-training stack is optional (see [training]).
"rich>=13.0",
"pyyaml>=6.0",
"httpx>=0.27",
"mcp>=1.0,<2",
"websockets>=13.0,<16",
"python-dotenv>=1.0.0",
"requests>=2.28.0",
# Vault (agent secret access-control) — ships in core, gated at runtime by
# ATN_WORKER_ISOLATION. Self-contained age-encrypted keystore (no HashiCorp).
# pyrage = age encryption for the local secret store (vendored under
# atn/_vendor/kevin). The broker itself uses only stdlib + ctypes.
"pyrage>=1.1",
# psutil = PID-reuse defense (create_time/cmdline) for the agent supervisor's
# orphan recovery under ATN_WORKER_ISOLATION. Cross-platform; the Linux broker
# _identity has a /proc fast path that does not need it, but the supervisor
# does. Small, pure-ish, ships in core.
"psutil>=5.9.0",
# pathspec = .gitignore matching for tool snapshots (atn/tool_tree.py).
"pathspec>=0.11",
# --- Full-node participation (register + gossip + substrate close) ---
# These are on the LIVE product path, so a plain `pip install
# autonet-computer` yields a fully functional node. Only genuinely
# compute-heavy training deps stay optional (see [training] below).
#
# Blockchain: agent registration + on-chain service. atn/on_chain.py,
# atn/runtime/agent_registry.py, nodes/common/crypto.py all lazy-import
# web3/eth-account; eth-utils.keccak is used unguarded at module level in
# nodes/common/mint_merkle.py. cryptography (gossip ed25519 signing) ships
# transitively with these.
"web3>=6.0.0,<8",
"eth-account>=0.10.0,<0.14",
"eth-utils>=2.0.0,<6",
# P2P: libp2p event gossip + federated close transport (nodes/common/p2p.py,
# blob_resolver.py). multiaddr ships with libp2p. trio is the required
# async runtime for the libp2p host. miniupnpc maps the listen port on
# home routers (UPnP, on by default) so NAT'd daemons become reachable.
"libp2p==0.8.1",
"trio>=0.22.0",
"miniupnpc>=2.0",
# numpy is imported at module level by the artifact index and the tool
# search index (daemon-local retrieval). Must be core.
"numpy>=1.24.0",
# Local tool search (Decision 2026-11-08, atn/search_model.py): the
# daemon runs all-MiniLM-L6-v2 itself, no torch. onnxruntime runs the
# pinned ONNX graph, tokenizers its tokenizer.json.
"onnxruntime>=1.17",
"tokenizers>=0.15",
]
[project.urls]
Homepage = "https://autonet.computer"
Repository = "https://github.com/autonet-code/node"
Issues = "https://github.com/autonet-code/node/issues"
[project.optional-dependencies]
# Native training: JEPA / FedAvg / model-sharding stack. These are the only
# genuinely compute-heavy deps and are NOT on the live product path — every
# torch/transformers/mss import on atn/ + nodes/common/ (outside the shelved
# JEPA modules ml.py, jepa.py, vl_jepa.py, text_jepa.py) is behind a
# try/except or a lazy in-function import. scipy is not imported by any live
# module either; it lives here with the rest of the training stack.
training = [
"torch>=2.0.0",
"scipy>=1.10.0",
# LLM backbone (open-weights encoder for JEPA)
"transformers>=4.40.0",
"accelerate>=0.28.0",
# Screen capture (perception input for training/observation)
"mss>=9.0.0",
]
# Back-compat alias. The full-node deps (web3, eth-account, eth-utils, libp2p,
# trio, numpy) moved to core so `pip install autonet-computer` is a working
# node — see the block in [project].dependencies. This extra now carries only
# the training stack, so existing `autonet-computer[network]` instructions
# still resolve. Prefer `[training]` for the training stack going forward.
network = [
"autonet-computer[training]",
]
# Core voice: TTS output + audio mixing.
# The low-level primitives (mixer, TTS backends, tones, PTT, STT) are VENDORED
# at atn/_vendor/voice_core, so this extra is self-contained: numpy and
# sounddevice are the only hard requirements. A separately installed
# `voice_core` still takes precedence (see atn/voice_service.py).
voice = [
"numpy>=1.24",
"sounddevice>=0.4",
]
# Individual TTS backends
voice-kokoro = ["autonet-computer[voice]", "kokoro-onnx>=0.4"]
voice-edge = ["autonet-computer[voice]", "edge-tts>=6.0", "miniaudio>=1.5"]
voice-11labs = ["autonet-computer[voice]", "requests>=2.28"]
# Push-to-talk: STT input via hotkey recording + Whisper transcription
voice-ptt = ["autonet-computer[voice]", "keyboard>=0.13", "faster-whisper>=1.0"]
# Everything voice-related
voice-full = [
"autonet-computer[voice]",
"autonet-computer[voice-kokoro]",
"autonet-computer[voice-edge]",
"autonet-computer[voice-ptt]",
]
# Development
dev = [
"pytest>=7.0.0",
"pytest-asyncio>=0.21.0",
"black>=23.0.0",
"mypy>=1.0.0",
]
[project.scripts]
atn = "atn.cli:main"
atn-vault-setup = "atn.vault_setup:main"
[tool.setuptools.packages.find]
include = ["atn*", "nodes*", "bridge"]
[tool.setuptools.package-data]
# The network registry (chain addresses + public RPC), pinned per release.
# Copy of the repo-root registry.json of record; a test keeps them identical.
# Read when the daemon joins the network, never fetched at boot.
"atn" = ["registry.json", "external_agents.md"]
"atn.connectors" = ["*/connector.json"]
# The bundled Chrome extension Browser Control loads with --load-extension.
# No lockfile: bridge deps resolve per install (atn/providers/bridge_updater.py).
"bridge" = ["*.ts", "package.json"]
"atn._vendor.kevin.vault" = ["*.md"]
# ABI-only contract copies (artifacts/ is gitignored and never ships).
# Resolved by nodes/common/contract_artifacts.py; refresh with
# scripts/sync_contract_abis.py.
"nodes.common" = ["abi/*.json"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]