pyCluster is a Linux-first DX cluster core with three main interface surfaces and a shared persistence layer.
Implemented in the main application process.
Responsibilities:
- telnet server
- command engine
- user/session model
- node-link handling
- protocol enforcement
- storage access
- System Operator web console
Separate process for the user-facing web UI.
Responsibilities:
- public spot/history/network views
- user login
- user posting
- watch lists and profile editing
SQLite is the default persistent store.
Used for:
- spots
- messages
- user prefs
- registry records
- protocol/operator state
The conservative, compatibility-friendly interface.
Design goals:
- readable output
- good command discovery
- legacy-friendly behavior where it matters
The browser control plane for local operations.
Design goals:
- visibility
- ease of management
- lower operational friction
The browser UI for ordinary users.
Design goals:
- usability
- policy-aware posting
- good visibility without telnet
Security is layered:
- callsign/password auth
- local access matrix
- callsign blocking
- auth-failure logging
- fail2ban integration
CTY data is local and refreshable.
Design goals:
- stable bundled baseline
- optional refresh from Country Files
- local overrides when urgent real-world exact calls appear before operators refresh
pyCluster separates:
- transport address
- cluster family
This allows the system to distinguish:
- how to connect
- how to behave after the link is up
pyCluster is not trying to be a byte-for-byte reimplementation of any single legacy codebase.
It is trying to:
- preserve interoperability
- preserve useful operator expectations
- improve visibility, deployment, and usability
- keep one coherent model across telnet, web, and operator tooling