Slang is a visual, flow-based programming language. Programs are graphs of connected operators, called blueprints, that transform data as it flows between their inputs and outputs.
This repository contains the Go runtime and two commands:
| Command | Purpose |
|---|---|
slangd |
Local daemon that manages blueprints, runs operators, and serves the visual editor. |
slang |
Standalone runner for JSON blueprint bundles, with pipe and HTTP modes. |
The visual editor and standard library live in separate repositories.
Open Slang Run and sign up or log in. Keep the recovery
code shown at signup. Create or clone a blueprint, edit and save it, then use
the studio's test action to execute it with the Go runner. HTTP deployments
receive a public address under <deployment-id>.slangapps.com.
The product website is maintained in
Bitspark/slang.bitspark.com.
tryslang.com and its former playground aliases now redirect there.
Hosting implementation and operations live in the private slang-infra repository. Its hosted operations guide covers the original backend services, Telstar/Meta, the two Docker hosts, isolation, backups and recovery. The previous playground guide retains the standalone configuration deployed earlier on 21–22 September 2026.
Install Go and Git, then run these commands in a terminal, including PowerShell on Windows:
git clone https://github.com/Bitspark/slang.git
cd slang
go mod download
go run ./cmd/slangd --only-daemonThe daemon listens on http://localhost:5149/. On first
launch it downloads the published UI and standard library from GitHub, so an
internet connection is required. --only-daemon prevents the browser from opening
automatically; omit it to open the UI on startup. Keep the terminal open and use
Ctrl+C to stop the daemon.
UI compatibility: The last published UI uses older save/run endpoints than the current source API. Serving its files locally does not make those operations compatible. Use the hosted playground for the visual editor; the source commands here are useful for working on the runtime and its current API.
The exact Go version used to validate Linux, Windows, and macOS builds is set in the CI workflow.
From the repository root, on Linux or macOS:
go build -o slangd ./cmd/slangd
go build -o slang ./cmd/slang
./slangd --only-daemonOn Windows, use PowerShell:
go build -o slangd.exe ./cmd/slangd
go build -o slang.exe ./cmd/slang
.\slangd.exe --only-daemonCheck the assets attached to a GitHub release
for your operating system and architecture. Download slangd for the daemon or
slang for the standalone runner, extract the archive, and run the executable
from a terminal.
The historical v0.1.26 release contains Linux and Intel macOS archives, but no Windows binaries. These archives also predate changes in this repository. Windows users should build from source using the commands above. See the release guide for the platforms packaged by the current workflow.
The slang runner expects a JSON bundle containing a main blueprint UUID
and a blueprints map with the blueprint and its dependencies. A single YAML
blueprint or a workspace ZIP is not a runner bundle.
For a minimal example, save this as echo.slang.json in the repository root:
{
"main": "d1e020d6-4414-42e0-a5c5-dd6fda91754e",
"blueprints": {
"d1e020d6-4414-42e0-a5c5-dd6fda91754e": {
"id": "d1e020d6-4414-42e0-a5c5-dd6fda91754e",
"meta": {"name": "Echo a number"},
"services": {
"main": {"in": {"type": "number"}, "out": {"type": "number"}}
},
"connections": {"(": [")"]}
}
}
}Start an HTTP runner:
go run ./cmd/slang -mode httpPost -bind localhost:8080 echo.slang.jsonIn a second terminal, send a JSON number. On Linux or macOS:
curl -H 'Content-Type: application/json' -d '21' http://localhost:8080/On Windows PowerShell:
Invoke-RestMethod -Method Post -Uri http://localhost:8080/ -ContentType application/json -Body '21'The response is 21. Use Ctrl+C in the runner's terminal to stop it.
The default process mode instead reads newline-delimited JSON from a pipe on
standard input and writes JSON to standard output. Diagnostics go to standard
error. Input values must match the blueprint's input type.
Set these environment variables before starting slangd. Paths below are
relative to your user home directory (~ on Unix, %USERPROFILE% on Windows).
| Variable | Default | Purpose |
|---|---|---|
SLANG_DIR |
slang/blueprints |
Writable workspace for your blueprints. |
SLANG_LIB_REPO_PATH |
slang/shared |
Destination for downloaded standard-library releases. |
SLANG_LIB |
slang/shared/slang |
Read-only directory of library blueprints. |
SLANG_UI |
slang/ui |
Directory containing the built UI assets. |
Useful flags:
| Flag | Effect |
|---|---|
--only-daemon |
Start without opening a browser. |
--skip-checks |
Skip downloading or updating the UI and standard library; use already installed or manually supplied files. |
--without-ui |
Do not serve the UI. Combine with --skip-checks to avoid downloading it. |
Run go run ./cmd/slangd -help for all available flags.
To work on a local standard-library checkout, set SLANG_LIB to its slang
directory and use --skip-checks to prevent automatic component updates. To
make that checkout writable through the daemon, use it as SLANG_DIR instead
and point SLANG_LIB at a separate, empty directory. Keep SLANG_UI pointing
at built UI assets if you want the daemon to serve them.
Run these checks from the repository root:
go mod verify
go vet ./...
go test -timeout 3m ./...
go build ./...GitHub Actions runs vet, tests with coverage, and builds on Linux, Windows, and macOS. It also tests release packaging. Coverage files and release archives are available as workflow artifacts. See CI and releases for tagged release publishing.
Bug reports and contributions are welcome. Please include your operating system,
go version or release version, the command you ran, and a minimal blueprint or
bundle when filing an issue.
Slang is licensed under the Apache License 2.0.