tuneplane-node 0.3.15__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,59 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .eggs/
6
+ build/
7
+ dist/
8
+ .venv/
9
+ venv/
10
+ .python-version
11
+ .pytest_cache/
12
+ .ruff_cache/
13
+
14
+ # Frontend
15
+ web/node_modules/
16
+ web/dist/
17
+ mintlify/scripts/node_modules/
18
+ mintlify/scripts/console-shots.local.json
19
+
20
+ # Local database / credentials / ledgers
21
+ # Local platform data: the console's database, its job work directories and the
22
+ # single-machine storage-root fallback. `.tuneplane-data/` is the current
23
+ # default; `.forge/` and a repository-root `.tuneplane/` are what earlier
24
+ # defaults wrote. Both are ignored rather than deleted -- they are somebody's
25
+ # data, and the platform does not move it on its own initiative. See
26
+ # docs/ops/local-data-after-the-rename.md.
27
+ .tuneplane-data/
28
+ /.forge/
29
+ /.tuneplane/
30
+ *.db
31
+
32
+ # Secrets / local configuration
33
+ .env
34
+ .env.*
35
+ !.env.example
36
+ docker-compose.override.yml
37
+ *.key
38
+ secrets.*
39
+
40
+ # Operating system / editor
41
+ .DS_Store
42
+ .idea/
43
+ .vscode/
44
+ *.swp
45
+ SwanLab/
46
+ RL/
47
+ .cursor/
48
+ # Claude Code: the shared hook config is committed, personal overrides are not.
49
+ .claude/settings.local.json
50
+
51
+ # Hydra run droppings from any tool invoked at the repo root (gym env validate,
52
+ # a bare verl compile). Generated, never read back, and they carry local paths.
53
+ outputs/
54
+
55
+ .codegraph/
56
+ .pnpm-store/
57
+
58
+ # Agent worktrees, created by the harness and never part of a commit.
59
+ .claude/worktrees/
@@ -0,0 +1 @@
1
+ ../LICENSE
@@ -0,0 +1 @@
1
+ ../NOTICE
@@ -0,0 +1,14 @@
1
+ Metadata-Version: 2.5
2
+ Name: tuneplane-node
3
+ Version: 0.3.15
4
+ Summary: TunePlane node daemon: runs job containers on one machine and reports it to a console.
5
+ License-Expression: AGPL-3.0-only
6
+ License-File: LICENSE
7
+ License-File: NOTICE
8
+ Requires-Python: >=3.12
9
+ Requires-Dist: fastapi>=0.110
10
+ Requires-Dist: httpx>=0.28.1
11
+ Requires-Dist: pydantic-settings>=2.0
12
+ Requires-Dist: tuneplane
13
+ Requires-Dist: typer>=0.12
14
+ Requires-Dist: uvicorn>=0.29
@@ -0,0 +1,48 @@
1
+ # Node-side distribution (`tuneplane-node`, imported as `tuneplane_node`). It sits
2
+ # in its own distribution rather than inside tuneplane-server for one blunt
3
+ # reason: installing the daemon used to install the entire control plane --
4
+ # fastapi, sqlalchemy, alembic,
5
+ # psycopg, redis, boto3, pyarrow, mcp -- onto every GPU machine in the fleet.
6
+ #
7
+ # What is here is what a machine needs to *be* a node: the container runtime
8
+ # wrapper, the GPU allocator, the daemon the console talks to, and the join /
9
+ # heartbeat client. The console depends on this package (not the reverse) because
10
+ # the local backend runs the same container runtime and allocator on its own host.
11
+ [project]
12
+ name = "tuneplane-node"
13
+ version = "0.3.15"
14
+ description = "TunePlane node daemon: runs job containers on one machine and reports it to a console."
15
+ requires-python = ">=3.12"
16
+ # Same licence as the control plane: this is infrastructure an organization runs,
17
+ # not the contract its users import. See ../LICENSING.md.
18
+ license = "AGPL-3.0-only"
19
+ license-files = ["LICENSE", "NOTICE"]
20
+ dependencies = [
21
+ # The JobSpec contract and the storage layout. Both sides of a job have to
22
+ # agree on where things live, so the layout cannot be re-derived here.
23
+ "tuneplane",
24
+ # The daemon is an HTTP server; the console calls it.
25
+ "fastapi>=0.110",
26
+ "uvicorn>=0.29",
27
+ "httpx>=0.28.1",
28
+ "pydantic-settings>=2.0",
29
+ "typer>=0.12",
30
+ ]
31
+
32
+ [project.scripts]
33
+ tuneplane-node = "tuneplane_node.cli:app"
34
+
35
+ [build-system]
36
+ requires = ["hatchling"]
37
+ build-backend = "hatchling.build"
38
+
39
+ [tool.hatch.build.targets.wheel]
40
+ packages = ["src/tuneplane_node"]
41
+
42
+ [tool.ruff]
43
+ line-length = 120
44
+ target-version = "py312"
45
+
46
+ [tool.ruff.lint]
47
+ select = ["E", "F", "I", "W", "B"]
48
+ ignore = ["E501", "B008"]
@@ -0,0 +1 @@
1
+ """TunePlane node agent: what a machine needs to be a Fleet node."""