A real-time terminal-first observability surface for HTTP behavior.
Install latest release directly:
curl -fsSL https://raw.githubusercontent.com/divijg19/Pulse/main/install.sh | bashPulse is a live, streaming API explorer for backend and infrastructure workflows.
Instead of waiting for a batch to finish, you see request outcomes as they happen.
The canonical experience is the native terminal UI; pulse web starts the browser WebUI when you want it.
Most API tools answer one question: What did the server return? Pulse focuses on the operational question: What is the system doing right now?
Design principles:
- Streaming over batching.
- Clarity over feature sprawl.
- Fast feedback over post-run forensics.
- Simple, inspectable architecture over framework complexity.
- Canonical terminal UI with Ready launch pad, payload editor, live metrics, timeline/log views, response inspector, and investigation comparison.
- Optional browser WebUI started with
pulse web. - Concurrent HTTP execution with immediate result streaming.
- Payload editor for request headers and raw body.
- Export captured results to JSON from the terminal UI with
w. - Single deployable Go binary with embedded frontend assets.
- Set URL, method, and concurrency.
- Optionally configure headers and body.
- Run and watch each request stream in real time.
- Select any result and press Enter to inspect full response details.
- Press
cto mark a result, select another, and presscagain to compare investigations (verdict, why, evidence, details). - Press
wto export all captured results to a timestamped JSON file in the current directory.
| Document | What it answers |
|---|---|
| ARCHITECTURE.md | System architecture, components, APIs, engine, concurrency, resource safety |
| RENDERING.md | TUI rendering architecture, layout, render lifecycle, rendering constitution |
| internal/tui/README.md | TUI package guide, file layout, navigation |
| internal/tui/STATE_OWNERSHIP.md | Model field ownership, lifetime, mutation rules |
| internal/tui/COMPARE_CONSTITUTION.md | Compare architecture: state model, analysis, rendering invariants |
| internal/tui/COMPARE_WORKFLOW.md | Compare UX: keybindings, lifecycle, persistence, preview behaviour |
| web/README.md | Frontend-only development details |
Every document answers exactly one question. No concept is explained in depth in more than one place. Read the doc whose question matches yours.
The root README is product-level. Deep implementation details are centralized in ARCHITECTURE.md.
curl -fsSL https://raw.githubusercontent.com/divijg19/Pulse/main/install.sh | bash
pulsepulse opens the terminal UI. To start the browser WebUI instead:
pulse webPrerequisites:
- Go 1.25+
- Bun
git clone https://github.com/divijg19/Pulse.git
cd Pulse
cd web
bun install --frozen-lockfile
bun run build
cd ..
go build -o pulse ./cmd/pulse
./pulseDefault WebUI address: http://localhost:8080
./pulse webBuild and run the container image (the frontend is built inside the image):
docker build -t pulse .
docker run --rm -it pulse # terminal UI
docker run --rm -p 8080:8080 pulse web # browser WebUI on :8080- GET /health
- POST /run
- GET /stream
For full request/response schema, validation rules, and limits, see ARCHITECTURE.md.
Stream channel:
curl -N http://localhost:8080/streamTrigger run:
curl -X POST http://localhost:8080/run \
-H "Content-Type: application/json" \
-d '{
"url": "https://httpbin.org/anything",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": "{\"ping\":\"pong\"}",
"concurrency": 5
}'mainCI builds the frontend and runsgofmt,goimports,staticcheck,golangci-lint,go vet, and the test suite (race + coverage).v*tags trigger the Release workflow: a matrix job builds and publishes raw binaries with sha256 checksums to GitHub Releases, and GoReleaser (with its release step disabled) builds and pushes a versioned Docker image to GHCR.
Check the installed version with pulse version.
MIT.