-
-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathpyproject.toml
More file actions
80 lines (76 loc) · 2.82 KB
/
pyproject.toml
File metadata and controls
80 lines (76 loc) · 2.82 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
[project]
name = "tinyagentos"
version = "0.1.0"
description = "Self-hosted AI agent memory system for low-power hardware"
license = { text = "AGPL-3.0-or-later" }
requires-python = ">=3.11"
dependencies = [
"fastapi>=0.115.0",
"uvicorn[standard]>=0.30.0",
"httpx>=0.27.0",
"jinja2>=3.1.0",
"pyyaml>=6.0",
"aiosqlite>=0.20.0",
"argon2-cffi>=23.1.0",
"sqlcipher3>=0.6.2",
"psutil>=5.9.0",
"python-multipart>=0.0.9",
# Project canvas board renders low-fidelity PNG snapshots for vision
# agents (tinyagentos/projects/canvas/render.py).
"Pillow>=10.0",
# Model torrent mesh — every instance is a potential peer so
# downloads distribute across the swarm rather than hammering a
# single mirror. Worker install scripts install the OS-level
# libtorrent-rasterbar as a prerequisite on each platform.
"libtorrent>=2.0.9",
"lxml>=5.0.0",
"readability-lxml>=0.8.1",
# Memory system — standalone package, pulled from GitHub
"taosmd @ git+https://github.com/jaylfc/taosmd.git@master",
# WebSocket client for dashboard proxy (shortcut_proxy.py)
"websockets>=12.0",
# Web Push VAPID signing — pulls in cryptography, http-ece, py-vapid
"pywebpush>=1.14",
# mDNS/Bonjour publisher so the controller is reachable at
# http://taos.local:<port>/ on the LAN without users knowing its IP
# (tinyagentos/services/mdns_publisher.py).
"zeroconf>=0.140",
]
[project.optional-dependencies]
worker = ["pystray>=0.19.0", "Pillow>=10.0"]
proxy = ["litellm[proxy]>=1.50.0", "prisma>=0.11.0"]
dev = [
"pytest>=8.0",
"pytest-asyncio>=0.23.0",
"httpx",
"respx>=0.21.0",
"websockets>=12.0",
]
e2e = [
"pytest>=8.0",
"pytest-playwright>=0.5.0",
]
[tool.setuptools.packages.find]
include = ["tinyagentos*"]
[project.scripts]
tinyagentos = "tinyagentos.app:main"
tinyagentos-worker = "tinyagentos.worker.__main__:main"
taos = "tinyagentos.app:main"
taos-gui = "tinyagentos.app:gui"
taos-worker-ctl = "tinyagentos.cli.worker:main"
[tool.pytest.ini_options]
markers = [
"e2e: End-to-end browser tests (require running server)",
"slow: Tests requiring a live stack (skipped in local CI; run with pytest -m slow)",
]
filterwarnings = [
# Asyncio teardown emits unraisable RuntimeError("Event loop is closed")
# warnings when finalisers (httpx clients, aiosqlite connections) fire
# during interpreter shutdown after the loop is gone. Harmless — tests
# have already passed — but trips GitHub Actions log parser into
# ##[error] annotations. Narrow filter: only matches the well-known
# "Exception ignored in:" prefix that pytest uses for these, so
# genuine unraisable exceptions in __del__ or forgotten awaitables
# still surface as test failures.
"ignore:Exception ignored in:pytest.PytestUnraisableExceptionWarning",
]