https://github.com/divijg19/pulse
Streaming API explorer & playground in Go for realtime HTTP observability- concurrent requests, live logs, and latency insights.
https://github.com/divijg19/pulse
concurrency devtools http infra networking observability realtime server-sent-events streaming
Last synced: 3 months ago
JSON representation
Streaming API explorer & playground in Go for realtime HTTP observability- concurrent requests, live logs, and latency insights.
- Host: GitHub
- URL: https://github.com/divijg19/pulse
- Owner: divijg19
- Created: 2026-03-29T16:31:56.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-04-06T13:57:46.000Z (3 months ago)
- Last Synced: 2026-04-06T15:35:48.785Z (3 months ago)
- Topics: concurrency, devtools, http, infra, networking, observability, realtime, server-sent-events, streaming
- Language: Go
- Homepage:
- Size: 127 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# `Pulse`
> **A real-time observability surface for HTTP behavior.**



**`Pulse`** is a live, streaming API explorer built for backend engineers and infrastructure enthusiasts. It bridges the gap between traditional API clients (like Postman) and heavy load-testing CLI tools (like `k6`).
Instead of firing requests and waiting for a batched response, `Pulse` utilizes a concurrent worker pool and **Server-Sent Events (SSE)** to stream metrics, logs, and latency visualizations to a reactive UI the exact millisecond they happen.
*(Will insert a 5-second high-framerate GIF of the UI streaming latency bars here)*
---
## π§ Why `Pulse`? (The Philosophy)
Most API tools answer the question: *"What did the server return?"*
`Pulse` answers: ***"What is the system doing right now?"***
It is designed with strict principles:
* **Streaming > Batching:** You shouldn't wait for 100 requests to finish to see the first result.
* **Clarity > Completeness:** No accounts, no saved workspaces, no clutter. Just pure, real-time HTTP I/O.
* **Fast > Feature-Rich:** The UI relies on native DOM updates and CSS Flexbox for visualizationβno heavy charting libraries.
### π§Ή Design Principles
```
Speed > features
Clarity > completeness
Streaming > polling
Simple > clever
```
---
## π Features
* **Concurrent Execution:** Fire `N` requests simultaneously via Go worker pools.
* **Live Latency Visualization:** Relative latency bars render in real-time, making performance outliers instantly obvious.
* **Terminal-Style Streaming Logs:** Watch success/failures auto-scroll as they resolve.
* **Breathing Metrics:** RPS (Requests per second), Success Rate, and Average Latency update dynamically as the batch progresses.
* **Built-in Safety:** Strict timeouts, context cancellation, and response-body truncation prevent memory leaks and OOM crashes.
## β‘ Core Experience
1. Enter API endpoint
2. Set concurrency (e.g., 10)
3. Click Send
```
β Requests fire in parallel
β Responses stream in live
β Logs update instantly
β Metrics evolve in real time
```
---
## ποΈ Architecture & Engineering Choices
```
[ Browser UI ]
β
β HTTP (POST) + SSE (stream)
βΌ
[ Go API Server ]
β
βββ Request Engine (concurrent execution)
βββ Stream Hub (event broadcasting)
βββ Metrics Aggregator (live stats)
```
---
## βοΈ Getting Started
### Prerequisites
* [Go 1.25+](https://go.dev/dl/) installed.
### π Deployment
Backend: single Go binary with server-sent events
Frontend: css, vite + solidjs static (served or CDN)
### Test via CLI (cURL)
Because `Pulse` uses standard SSE, you can interact with it directly from your terminal:
*Start a stream session:*
```bash
curl -N http://localhost:8080/stream
```
*Trigger a batch (in another terminal):*
```bash
curl -X POST http://localhost:8080/run \
-H "Content-Type: application/json" \
-d '{"url": "https://jsonplaceholder.typicode.com/posts", "method": "GET", "concurrency": 20}'
```
---
## π License
MIT License. Do whatever you want with it.