Terminal-based HTTP Client and Go Server Manager
Burrow is a keyboard-driven TUI application for building and sending HTTP requests while running and monitoring Go servers — all from your terminal.
It is designed as a lightweight, terminal-native alternative to tools like Postman or Insomnia, built specifically for Go developers.

When developing APIs in Go, you often:
- Run a local server
- Switch to another tool to test endpoints
- Jump between multiple applications repeatedly
Burrow keeps everything in one place:
- Build and send HTTP requests
- Start and stop Go servers
- Monitor server health
- Save and reuse requests
All without leaving the terminal.
Install via go install:
go install github.com/ManoloEsS/burrow/cmd/burrow@latest-
Install Burrow.
-
Copy
test_go_server.gofrom thetest_serverdirectory into a working folder. -
Navigate into that folder and run:
cd your/test/folder burrow -
Press Ctrl-G and enter:
test_go_server.go -
Press Ctrl-R to start the server (ensure port
8080is free). -
Press Ctrl-S to send a request (leave fields empty).
-
View the response in the Response panel.
You are now running and testing a Go server from the same terminal interface.
- Interactive terminal UI built with
tview - Support for
GET,POST,PUT,DELETE,HEAD - Save requests to embedded SQLite database
- Start and stop Go server files
- Automatic server health checking
- YAML configuration support
- XDG Base Directory compliant storage
- Fully keyboard-driven (mouse optional)
If the URL field is empty, Burrow sends requests to:
http://localhost:8080
You can modify the default port via configuration or environment variables.
Supported formats:
somewebsite.comhttp://somewebsite.comhttps://somewebsite.com
If no protocol is provided, https:// is automatically added.
Send to local port:
:3030
Resolves to:
http://localhost:3030
Send to specific endpoint:
:3030/foobar
Resolves to:
http://localhost:3030/foobar
If using default port:
/foo
Resolves to:
http://localhost:8080/foo
Burrow runs Go server files directly from your working directory.
If launched in:
home/app
Entering:
server.go
Will execute:
./server.go
To run a file elsewhere, use the absolute path.
When a server starts, Burrow launches a background goroutine that sends a GET request to:
/health
every 5 seconds.
For this to function properly, your server must expose a /health endpoint.
Currently, Burrow supports Go servers only.
Burrow follows the XDG Base Directory Specification and supports YAML configuration.
It works out-of-the-box with sensible defaults.
~/.config/burrow/config.yaml- Environment variables
- Default values
- Config:
~/.config/burrow/config.yaml - Database:
~/.local/share/burrow/burrow.db - Logs:
~/.local/state/burrow/burrow_log - Server Cache:
~/.cache/burrow/servers/
app:
default_port: "8080"
database:
path: ""If the database path is empty, Burrow uses the default XDG path.
Override configuration using:
DEFAULT_PORT=3000 burrow
DB_FILE=/tmp/mydb.db burrowAvailable variables:
DEFAULT_PORTDB_FILE
- Ctrl-F – Focus form
- Ctrl-S – Send request
- Ctrl-A – Save request
- Ctrl-U – Clear form
- Ctrl-N / Ctrl-P – Navigate fields
- Ctrl-T – Focus response
- J / K – Scroll
- Ctrl-L – Focus list
- Ctrl-O – Load request
- Ctrl-D – Delete request
- J / K – Navigate list
- Ctrl-G – Focus server path
- Ctrl-R – Start server
- Ctrl-X – Stop server
- Ctrl-C
- Written in Go
- Embedded SQLite database
- Background health-check goroutine
- Structured configuration with YAML
- XDG-compliant file management
- Modular internal architecture
- TUI built with
tview
Burrow is intentionally built as a keyboard-driven TUI rather than a GUI application.
Reasons:
- Many Go developers work primarily in the terminal.
- Reduces context switching between tools.
- Encourages a fast, focused API development workflow.
Burrow currently supports running Go server files directly.
Reasons:
- Optimized for Go developers.
- Tight integration with the Go toolchain.
- Simplified execution and monitoring logic.
Future iterations may introduce support for Python or Node.js servers.
When a server starts, Burrow launches a background goroutine that periodically checks:
GET /health
Reasons:
- Encourages explicit health endpoints.
- Demonstrates safe concurrent design.
- Provides immediate developer feedback if the server crashes.
The health checker runs independently to avoid blocking UI interactions.
Burrow follows the XDG Base Directory Specification for configuration and storage.
Reasons:
- Keeps the system predictable and Linux-friendly.
- Avoids polluting the home directory.
- Respects modern filesystem conventions.
Saved requests are persisted using SQLite.
Reasons:
- Zero external dependencies.
- Lightweight and fast.
- Durable local storage.
- Structured querying over flat-file storage.
Configuration priority:
- YAML config
- Environment variables
- Defaults
Reasons:
- Mirrors production configuration patterns.
- Enables environment-specific overrides.
- Maintains predictable fallback behavior.
Burrow automatically:
- Adds
https://if protocol is missing. - Interprets
:PORTashttp://localhost:PORT. - Supports relative endpoint paths like
/foo.
Reasons:
- Optimizes for local API development.
- Reduces typing friction.
- Improves workflow efficiency.
The project separates:
- UI logic
- HTTP request handling
- Server lifecycle management
- Storage
- Configuration
Reasons:
- Improves maintainability.
- Simplifies future expansion.
- Reduces tight coupling between components.
Concurrency is used intentionally:
- Health checker runs in a separate goroutine.
- Server lifecycle management avoids blocking the UI.
- Context cancellation ensures controlled shutdowns.
The goal is safe, predictable concurrency.
- Go
1.25.1or later - CGO enabled (SQLite dependency)
- Terminal with color support
git clone https://github.com/ManoloEsS/burrow.git
cd burrow
go mod tidy
go build -o burrow cmd/burrow/main.go- Support for additional body types (form-data, multipart, etc.)
- Multi-language server execution (Python, Node.js)
- Enhanced request history filtering
- Improved response formatting
Contributions, issues, and suggestions are welcome.
MIT License