Files
wild-pc/castle-api/pyproject.toml
Paul Payne 6c00a9d33c feat(mesh): NATS JetStream transport replacing MQTT
Replace the Mosquitto/paho mesh transport with NATS JetStream KV:
- mesh_wire.py: transport-agnostic registry (de)serialization (secret-stripped)
- nats_client.py: async CastleNATSClient — registry in the castle-registry KV
  bucket, heartbeat liveness, delete-on-stop offline, watch-driven mesh state
- rewire main/config/models/nodes; MeshStatus -> connected/nats_url
- frontend MeshStatus + MeshPanel to the new fields
- drop paho-mqtt/mqtt_client + _mqtt._tcp mDNS browse; add nats-py
- keep the secret-stripping invariant; mDNS peer discovery retained

Single-node verified; two-node parity pending the second node.
2026-07-07 04:55:02 -07:00

39 lines
727 B
TOML

[project]
name = "castle-api"
version = "0.1.0"
description = "Castle API"
requires-python = ">=3.13"
dependencies = [
"fastapi>=0.115.0",
"uvicorn[standard]>=0.34.0",
"pydantic-settings>=2.0.0",
"httpx>=0.27.0",
"castle-core",
"nats-py>=2.9.0",
"zeroconf>=0.131.0",
]
[tool.uv.sources]
castle-core = { workspace = true }
[project.scripts]
castle-api = "castle_api.main:run"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/castle_api"]
[dependency-groups]
dev = [
"pytest>=7.0.0",
"pytest-asyncio>=0.23.0",
"httpx>=0.27.0",
"pyyaml>=6.0.0",
]
[tool.ruff.lint.isort]
known-first-party = ["castle_api"]