Atomix native remote management
Nixstasis
State synchronization
Project
- Nixstasis is an IoT monitoring and remote access platform.
- The Go client registers managed devices, collects telemetry through Stary/Starlark scripts, polls the server, and manages FRP client tunnels.
- The Elixir/Phoenix server provides the control plane, LiveView UI, device API, E2E API, reporting, alerting, and TLS approval endpoint.
- The supported server deployment path is Docker Compose under
deploy/compose.
Traceable references:
README.md:3-17packages/client/README.md:1-12packages/server/README.md:1-17deploy/compose/README.md:1-20
Primary Use Cases
- Device registration and persistent device identity.
- Device telemetry polling and server-side heartbeat processing.
- Approval and monitoring of devices through a Phoenix LiveView UI.
- Alert-rule configuration and alert review.
- Custom report creation and report result browsing.
- On-demand remote access through FRP tunnels fronted by Caddy.
- Browser-based SSH terminal sessions through Phoenix Channels and FRP TCP muxing.
- Client/server E2E validation runs using
/e2eendpoints and client-side journey execution.
Entry Points
Phoenix HTTP Endpoints
- Browser LiveView routes in
packages/server/lib/nixstasis_web/router.ex://devices/devices/new/devices/:id/alerts/alerts/new/alerts/:id/edit/alerts/rules/reports/reports/new/reports/:id/edit/reports/:id/settings
- JSON device/API routes in
packages/server/lib/nixstasis_web/router.ex:GET /api/v1/builder-schemasGET /api/v1/builder-schemas/:schema_id/versions/:schema_version/optionsPOST /api/v1/builder-configurations/validateGET /api/v1/devicesPOST /api/v1/devices/registerPOST /api/v1/devices/:device_id/heartbeatPOST /api/v1/devices/:device_id/command_resultsGET /api/v1/devices/:device_id/command_payloads/:refGET /api/v1/check_domain
- Ash JSON:API routes are forwarded under
/api/jsonthroughNixstasisWeb.AshJsonApiRouter. - E2E routes are under
/e2eand useNixstasisWeb.Plugs.E2EEnabled.
LiveView Entry Points
NixstasisWeb.DashboardLive.IndexNixstasisWeb.DeviceLive.IndexNixstasisWeb.DeviceLive.ShowNixstasisWeb.AlertLive.IndexNixstasisWeb.AlertLive.RulesNixstasisWeb.ReportLive.IndexNixstasisWeb.ReportLive.ShowNixstasisWeb.SettingsLive
Traceable reference:
packages/server/lib/nixstasis_web/router.ex:30-45
Go Client Commands
nixstasis register: detects device identity and registers with the server.nixstasis poll: starts the telemetry polling loop.nixstasis script install <path>: installs a Stary script.nixstasis script list: lists installed scripts.nixstasis script remove: removes installed scripts.nixstasis script test: tests scripts.nixstasis script repl: starts the script REPL.
Traceable references:
packages/client/cmd/nixstasis/main.gopackages/client/cmd/nixstasis/register.gopackages/client/cmd/nixstasis/poll.gopackages/client/cmd/nixstasis/script.gopackages/client/cmd/nixstasis/install_script.gopackages/client/cmd/nixstasis/list_scripts.gopackages/client/cmd/nixstasis/remove_script.gopackages/client/cmd/nixstasis/test_script.gopackages/client/cmd/nixstasis/repl.go