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.
echo
- 0
- 0
- 0
- 0
- 2
- about 6 hours ago
- August 1, 2026
MIT License
Sat, 01 Aug 2026 20:37:57 GMT