SLShakyLineGitHub
v1.0.0 stable

Break the network before the network breaks you.

ShakyLine is a transparent TCP fault-injection proxy for teams that need to test latency, jitter, packet loss, throttling, and stalls against real application traffic.

run a fault drill
shakyline --listen 0.0.0.0:8080 \
  --upstream api.example.com:443 \
  --control 9090

curl -X POST http://localhost:9090/profiles/default \
  -H "Content-Type: application/json" \
  -d '{"c2s_latency_ms":200,"c2s_drop_rate":0.05}'
releasev1.0.0
runtimeTCP proxy
control apiHTTP
downloadWindows x64
download

Get ShakyLine running.

Use the Windows installer for the fastest setup, grab the portable ZIP for manual installs, or build from source on Linux and macOS.

Recommended

Windows installer

Install ShakyLine and open a new terminal to run `shakyline` from PATH.

Download .exe
Portable

Windows ZIP

Extract the archive and run the binary from the folder you choose.

Download .zip
Linux and macOS

Build from source

Clone the repository and build with CMake and a C++20 compiler.

Build guide
use cases

Where ShakyLine fits

Resilience testing

Verify retries, timeouts, and degraded-mode behavior before production traffic finds the weak path.

CI failure drills

Run repeatable latency and packet-loss scenarios as part of integration tests.

Streaming and realtime apps

Simulate jitter, slow upstreams, and asymmetric traffic for sockets and long-lived TCP flows.

Incident rehearsal

Practice service-owner playbooks against controlled network failure instead of synthetic dashboards.

workflow

A simple control loop

1

Start the proxy

Choose a local listen port and an upstream host.

2

Apply a profile

POST a named fault profile to the control API.

3

Run your client

Send normal application traffic through ShakyLine.

4

Reset traffic

DELETE the profile when the scenario is done.

documentation

Guides for real fault drills.

The docs include install paths, command recipes, API examples, profile fields, and practical test scenarios.

verify install
shakyline --version

shakyline --listen 0.0.0.0:8080 \
  --upstream 127.0.0.1:9000 \
  --control 9090