echo

Echo

Field-test Ethernet gear without memorizing a single IP address

A terminal UI for configuring and testing Ethernet-connected equipment on the factory floor — built with Phosphor, running on a ClockWork uConsole.


What it does

Techs carry named presets instead of IP addresses. Each preset — e.g. "Cube20 – Line 3 Panel A" — bundles everything needed to talk to one device:

  • The local IP/subnet to adopt on the uConsole's interface
  • The remote IP to ping and verify connectivity
  • A browser launch target, for devices with a web config UI (like the Murr Cube20)

From a preset, a tech can apply the local IP, run a ping test, or open the device's config page — without typing an address. When the network needs to go back to normal (checking email, general use), a single DHCP action releases the static config.


Why Phosphor

Echo is also Phosphor's Phase 28 "build a real app" milestone — the first non-toy consumer of the framework, meant to surface friction before 1.0. See Phosphor's DESIGN.md for the framework's architecture; DESIGN.md in this repo covers Echo's own screens and data model.


Project structure

src/
├── echo.cr                  entry point
├── state/                   AppState struct (immutable)
├── screens/                 Screen subclasses (controllers)
├── widgets/                 Widget subclasses — compose Phosphor's MockWidget library
├── ports/                   PingPort, InterfacePollPort
└── models/                  EchoPreset and JSON persistence
spec/                        mirrors src/ layout

Building

Requires Crystal (>= 1.15.0, matching Phosphor's minimum; .tool-versions pins the exact version used in development) and just.

shards install
just build
just run

For an actual uConsole deployment:

just build-release

See justfile (just --list) for the full set of recipes — spec, lint, format, changelog, coverage.


Platform notes

Echo shells out to ip, dhclient (or NetworkManager equivalents), and xdg-open — it expects a Linux environment with those available, which the uConsole's default image provides. Setting a static IP or requesting a DHCP lease may require elevated privileges depending on your system's network configuration; see DESIGN.md § "Open risks" for the current state of that decision.


Status

Pre-1.0, actively developed alongside Phosphor. See TASKS.md for the current phase.

License

MIT — see LICENSE.

Repository

echo

Owner
Statistic
  • 0
  • 0
  • 0
  • 0
  • 2
  • about 6 hours ago
  • August 1, 2026
License

MIT License

Links
Synced at

Sat, 01 Aug 2026 20:37:57 GMT

Languages