Skip to content

Latest commit

 

History

History
146 lines (118 loc) · 9.55 KB

File metadata and controls

146 lines (118 loc) · 9.55 KB

Signal Lab

The lab for the protocols your show, installation and IoT gear speaks.
Send, capture, emulate and impair OSC, UDP/TCP, HTTP, WebSocket and MQTT —
by hand, as repeatable experiments, and from CI or an AI assistant.

CI Release Documentation License: MIT

Documentation · Download · Server & Docker · Changelog

Documentation in: English · Русский · Español · Français · Deutsch · Português · 中文 · 日本語 · 한국어 · हिन्दी · العربية


Signal Lab is a desktop app for Windows and Linux and a server you use from a browser (also as a Docker image). It is built for bringing up shows, installations and networked devices before the rest of the system exists — and for testing the services and APIs they talk to. In one window: an OSC sender and monitor, a UDP/TCP terminal, an HTTP and WebSocket client, an MQTT client and broker, mock servers for the devices and APIs that are not there yet, a network impairment relay, a load tester and a test runner for CI.

What you can do

Talk to devices OSC with typed arguments, a monitor and a waveform generator; raw UDP and TCP; HTTP with Basic, Bearer and Digest, cookies and bursts; WebSocket; MQTT 3.1.1 with QoS 0–2, retained messages and a last will; broadcast, multicast and discovery.
See every byte The Inspector captures what Signal Lab sends and receives, decoded and in hex; export it, or save a frame as a signal.
Keep a library Signals in folders, fired from anywhere with Ctrl+K.
Fake what is not there Emulators: HTTP APIs, OSC/UDP responders, TCP devices and an MQTT broker, with rules, templated replies, faults and outages.
Break the network on purpose An impairment relay for UDP and TCP: latency, jitter, loss and bursts of loss, duplication, corruption, reordering, a bandwidth limit, resets, half-open connections and going offline, with presets from a LAN to a satellite link.
Push and probe Storm, a controlled flood of UDP datagrams or TCP connections with the rate, throughput and errors live; the Scanner, a TCP connect scan with the greeting each service sends.
Make it repeatable Experiments: a visual flow of sends, waits, checks, extraction, branches, loops, parallel branches, retries and fault phases, with parameters, profiles and secrets — seeded, reproducible, with a report of every run.
Load it Load profiles on an HTTP request — constant, ramp, steps, spike, random arrivals — with thresholds on p95, errors and rate, and two runs compared.
Automate it signallab, the command line with JUnit reports for CI and a GitHub Action; MCP for AI assistants; an HTTP API for everything the interface does.

The interface speaks eleven languages: English, Russian, Spanish, French, German, Portuguese, Chinese, Japanese, Korean, Hindi and Arabic. The documentation is complete in eight of them; in Portuguese, Japanese and Arabic most of its pages are still being translated.

Get it

  • Windows — Signal.Lab_<version>_x64-setup.exe (just for you, or for everyone) or the .msi from the latest release. The installers are not code-signed yet, so SmartScreen may ask: More info → Run anyway.

  • Linux — .deb, .rpm or .AppImage from the same page.

  • Server — on a Linux host with Docker: in one command (it offers to install Docker if it is missing), or by hand:

    curl -fsSL https://raw.githubusercontent.com/ProAnima/SignalLab/main/deploy/install.sh | sh
    docker run -d --name signallab --network host --restart unless-stopped \
      -v signallab-data:/data --read-only --cap-drop ALL --security-opt no-new-privileges \
      ghcr.io/proanima/signallab:latest
    docker logs signallab    # the access token, on the first start
  • Command line — signallab comes with the Windows installers, the .deb and the .rpm (not the AppImage) and is in the server image; archives for CI are on the release page.

The desktop app looks for signed releases once a day and installs one when you say so. Details: installing and updating, running a server.

Documentation

The documentation is online and, from the release after 1.0.0, inside the app and the server, so it works offline: press F1 on any screen.

Getting started what it is, installing, the window, a first session, the ideas
Protocols OSC, UDP and TCP, HTTP, WebSocket, MQTT, broadcast and discovery
Tools signals, the Inspector, emulators, impairment, Storm, Scanner
Experiments the editor, every node, data and templates, flow, load, faults, runs
Automation the command line, CI, MCP
Server · HTTP API running it, its security, every command and event
Reference shortcuts, files, troubleshooting, every error message

Build from source

npm install
npm run tauri dev        # the desktop app with live reload
npm run check            # the checks CI runs; CI also tours every screen and builds the image

You need Node 22.18 or newer (CI uses 24), Rust as pinned in rust-toolchain.toml and, on Windows, the MSVC build tools and WebView2 (part of Windows 10 and 11); on Linux, WebKitGTK 4.1 and the libraries Tauri needs. See building and running and the architecture.

Responsible use

Storm, Scanner and Broadcast send real traffic to real hosts, and a broadcast or a sweep reaches every device on the segment. Point them only at equipment you own or are authorised to test. Every default unicast target is on loopback — Broadcast's broadcast, multicast and sweep modes start on the local segment (255.255.255.255, 239.1.1.1, 192.168.1.0/24); the engine's guard rails — a sweep of at most 1024 hosts, a beacon of at most 50 000 packets a second — are guard rails, not permission.

Contributing

Issues, ideas, translations and pull requests are welcome — see CONTRIBUTING.md. Report security problems privately as SECURITY.md describes. Everyone follows the code of conduct.

License

MIT © 2026 ProAnimaStudio — info@proanima.net.