Download

One binary. Deployed in one morning.

Strowger ships as a single strowgerd executable with no runtime dependencies — embedded SQLite, a TOML config, a systemd unit — plus the strowger-cli admin tool. Pick your platform below, or use the one-liner.

v1.0.0-rc4 · release candidate

Install in one line

Debian / Ubuntu, amd64 or arm64. Detects your architecture, downloads and checksum-verifies the binary, sets up the systemd service:

curl -fsSL https://lic.strowger.io/install.sh | sudo bash

On macOS (Apple Silicon) the same script runs without sudo: it downloads, checksum-verifies and unpacks locally, then prints the manual-run steps. Then edit the config, drop in your secrets, start the service and activate the licence — see Install below.

Binaries
Linux · x86-64
strowgerd-1.0.0-rc4-x86_64-unknown-linux-gnu.tar.gz
glibc 2.31+ · ≈ 13 MB · SHA-256 6bbb37060a5a…2391a377
Download
Linux · ARM64
strowgerd-1.0.0-rc4-aarch64-unknown-linux-gnu.tar.gz
glibc 2.31+ · ≈ 13 MB · SHA-256 69a1bb7856a0…363af6eae
Download
Linux · x86-64 · static
strowgerd-1.0.0-rc4-x86_64-unknown-linux-musl.tar.gz
fully static (musl) · ≈ 13 MB · SHA-256 4771c2235c18…a5102d42
Download
macOS · Apple Silicon
strowgerd-1.0.0-rc4-aarch64-apple-darwin.tar.gz
evaluation build · manual run, no service · ≈ 10 MB · SHA-256 68064ceeb1ee…938a10f2
Download
Verify

Every release ships a SHA256SUMS file. Verify the archive before you run it:

# fetch the checksums
curl -fsSLO https://lic.strowger.io/download/strowgerd-1.0.0-rc4-SHA256SUMS

# verify (run from the folder holding the .tar.gz)
sha256sum -c strowgerd-1.0.0-rc4-SHA256SUMS 2>/dev/null | grep OK

A detached minisign signature and its public key will be published here for the 1.0 final release; the one-line installer already refuses to install on a checksum mismatch.

Install
# unpack
tar xzf strowgerd-1.0.0-rc4-x86_64-unknown-linux-gnu.tar.gz
cd strowgerd-1.0.0-rc4-x86_64-unknown-linux-gnu

# install strowgerd + strowger-cli + systemd unit (idempotent)
sudo ./deploy/install.sh ./strowgerd

# configure: trunk, model key, inbound routes
sudo editor /etc/strowger/config.toml
sudo editor /etc/strowger/strowger.env       # secrets, 0640 root:strowger

# start
sudo systemctl enable --now strowger

# activate the licence (the binary is enforced: new calls are refused until you do).
# demo self-service — light identification, 1 channel / 60-second calls:
strowger-cli register --company "Your Co" --contact "You" \
  --email [email protected] --phone +33XXXXXXXXX
# commercial key instead:  strowger-cli register --key <YOUR-KEY>

journalctl -u strowger -f

macOS (evaluation): unpack the darwin tarball, then run STROWGER_CONFIG=./config.toml ./strowgerd by hand — no systemd, no root. Production targets Linux.

What's new in v1.0.0-rc4

Agent Call Transfer (transfer_call): the voice agent can now autonomously transfer an active conversation to a human agent, department, or external phone number using the built-in transfer_call tool.

Configure transfer policy and security rules under the [transfer] section in config.toml:

# /etc/strowger/config.toml
[transfer]
enabled       = true
mode          = "refer"       # "refer" (SIP REFER / carrier blind transfer) or "hairpin" (bridged 2nd leg)
max_per_call  = 3             # Anti-loop protection: max transfers allowed per call
allow         = [             # Fail-closed whitelist: E.164, prefixes (+), wildcards (*), or SIP URIs
  "+33144556677",
  "+33184*",
  "sip:*@company.com",
]
deny          = [             # Blacklist overrides allow
  "+33184163999",
]
drain_timeout_ms   = 4000    # Playout drain before issuing transfer
refer_timeout_ms   = 15000   # Timeout waiting for carrier REFER/NOTIFY progression
hairpin_timeout_ms = 30000   # Timeout waiting for 2nd leg answer in hairpin mode
  • mode = "refer" (Default): Issues in-dialog SIP REFER (RFC 3515) to delegate the transfer to your carrier/PBX, drains the farewell message, verifies progression via NOTIFY, and tears down the initial leg. Zero ongoing compute or RTP bandwidth.
  • mode = "hairpin": Places a second outbound leg directly to the target destination, cross-connects bidirectional 8 kHz PCM audio streams (A↔C), cleanly releases the AI voice backend session, and supervises both legs with cascade hangup (BYE) and correlated CDRs. Works across all carriers and PSTN destinations regardless of carrier REFER support.

Real-time Transcript Streaming Aggregation: User and agent speech turns are aggregated in real time with high-precision timestamps and rendered into structured call transcripts in CDRs and webhooks.

Configuration — payload limits

Call payload validation limits are configurable via the [limits.payload] section in TOML or environment variables (priority: TOML > Environment > Compiled defaults):

# /etc/strowger/config.toml
[limits.payload]
objectives-len    = 8192    # Max system prompt size in bytes (default: 8192)
first-message-len = 4096    # Max opening message size in bytes (default: 4096)
url-len           = 2048    # Max callback_url / proxy_url length (default: 2048)
short-field-len   = 256     # Max caller_id / agent_id / model / language length (default: 256)
proxy-tools       = 256     # Max proxy_tools entries (default: 256)

Or set via environment variables in /etc/strowger/strowger.env: STROWGER_MAX_OBJECTIVES_LEN, STROWGER_MAX_FIRST_MESSAGE_LEN, STROWGER_MAX_URL_LEN, STROWGER_MAX_SHORT_FIELD_LEN, and STROWGER_MAX_PROXY_TOOLS.

Licence

Strowger is licensed per concurrent channel — one channel = one simultaneous call. The shipped binary enforces the licence: each install carries an offline signed licence (Ed25519) that is the sole authority and keeps working even if the licence server is unreachable, up to its own expiry. Capacities (max_concurrent_calls, trunks, recording, AI) are read from the verified licence. On expiry only new calls are refused; calls in progress always finish, and /health turns degraded with a clear reason.

Every install runs a free demo — capped at 1 trunk, 1 channel and a 1-minute maximum call duration. Activate it once with strowger-cli register; upgrade the same licence to lift the caps, no reinstall. Model tokens and telecom minutes are always yours, paid at cost to your providers, with no markup from us. See pricing.