ECTLogger

ECTLogger TUI/Packet Client Spec Draft (Back-Burner)

Last updated: 2026-06-08

This document is a structured draft spec for a terminal-first ECTLogger client designed for low-bandwidth and degraded-link operations.

1. Problem Statement

Web UI workflows assume stable browser access and sufficient bandwidth. Emergency comms operations may require:

Goal: provide a resilient terminal client and related gateway patterns that keep essential net operations available when browser-first workflows are impractical.

2. Goals and Non-Goals

Goals

Non-Goals (initial release)

3. Scope

In Scope (phaseable)

Out of Scope for now

4. Operator Personas and Use Cases

Primary use cases:

  1. Field deployment with a laptop + TNC.
  2. Remote check-ins via form/gateway path.
  3. HF/low-throughput operation using abbreviated protocol.
  4. Backup operations when primary internet path is unavailable.

5. Functional Requirements

5.1 Terminal UI Behavior

Concept UI:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    ECTLogger TUI Client                    β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚ NET: LA County ARES Training Net    Status: ACTIVE     β”‚β”‚
β”‚  β”‚ Freq: 147.435+ (Active) | 223.96 | D-STAR REF033C      β”‚β”‚
β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”‚
β”‚  β”‚ #  β”‚ CALL    β”‚ NAME      β”‚ STATUS β”‚ FREQ    β”‚ TIME     β”‚β”‚
β”‚  β”‚ 1  β”‚ W6ABC   β”‚ John      β”‚ IN     β”‚ 147.435 β”‚ 19:02    β”‚β”‚
β”‚  β”‚ 2  β”‚ KN6XYZ  β”‚ Maria     β”‚ IN     β”‚ 223.96  β”‚ 19:03    β”‚β”‚
β”‚  β”‚ 3  β”‚ N6TEST  β”‚ Bob       β”‚ LSN    β”‚ 147.435 β”‚ 19:05    β”‚β”‚
β”‚  β”‚ 4  β”‚ K6EMT   β”‚ Sarah     β”‚ TFC    β”‚ D-STAR  β”‚ 19:07    β”‚β”‚
β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”‚
β”‚  β”‚ CMD> _                                                  β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

5.2 Full Command Mode (Terminal)

Baseline command set includes:

CMD> ci W6NEW John Pasadena        # Check in W6NEW
CMD> co W6ABC                      # Check out W6ABC
CMD> st W6NEW tfc                  # Set status to "has traffic"
CMD> freq 2                        # Switch active freq to #2
CMD> list                          # Refresh check-in list
CMD> chat Net is moving to 223.96  # Send chat message
CMD> close                         # Close the net
CMD> help                          # Show commands

5.3 Abbreviated Command Mode (Packet)

For links around 1200 baud and similar constraints:

ECT>C W6NEW,JOHN,PASADENA,IN       # Check in
ECT>OK 5                           # Response: check-in #5
ECT>L                              # List check-ins
ECT>1:W6ABC:JOHN:IN:19:02
ECT>2:KN6XYZ:MARIA:IN:19:03
ECT>3:W6NEW:JOHN:IN:19:08
ECT>END

5.4 Packet Optimization Requirements

6. API Integration Requirements

The client relies on existing endpoints for core operation:

Endpoint Purpose
POST /api/auth/magic-link/request Auth bootstrap (or API key alternative)
GET /api/nets/?status=active List active nets
GET /api/nets/{id} Get net details
POST /api/check-ins/nets/{id}/check-ins Check in station
PUT /api/check-ins/{id}/status Update status
PUT /api/nets/{id}/active-frequency Change active frequency
POST /api/chat/nets/{id} Send chat message
PUT /api/nets/{id}/close Close net

7. Authentication and Trust Model (Draft)

Candidate models for constrained and automated environments:

Open design note: select one primary model for M1 and define rotation/revocation process.

Example form payload:

To: ECTLOGGER
Subject: CHECKIN

NET_ID: 42
CALLSIGN: W6ABC
NAME: John
LOCATION: Pasadena
STATUS: IN

Gateway behavior (future):

9. Implementation Options

Approach Pros Cons
Python + Rich/Textual Aligns with backend stack, rapid iteration Python runtime dependency
Go + Bubble Tea Single binary, fast startup, broad deployment Separate language/toolchain
Rust + Ratatui Small binary, low resource profile Higher implementation complexity
Shell + curl Maximum portability Limited UX and maintainability

10. Milestones (Proposed)

11. Open Questions

12. Mission Fit

This concept supports ECTLogger’s emergency communications mission by preserving core net operations under degraded connectivity where browser-first workflows are not reliable.

13. M0 Decision Record

Status: Draft defaults for implementation kickoff.

Decision A: Primary Auth Model for M1

Decision B: Minimum M1 Command Set

Decision C: Offline Queue Conflict Resolution Policy