Complete documentation for building config-driven Terminal User Interfaces with TermStack.
- Main README - Project overview and quick start
- Installation - Download and install TermStack
- Your First TUI - 30-second tutorial
- ⭐ Authentication Guide - HTTP APIs & CLI authentication
- ⭐ Templates & Context - Template syntax, variables, navigation
- Configuration - YAML configuration overview
- ⭐ GitHub API Browser - Complete GitHub integration
- ⭐ AWS CLI Integration - S3, EC2, Lambda dashboards
- Kubernetes Dashboard - k9s-style interface
- Dog API Browser - REST API example
- Configuration Schema - Complete YAML reference
- Keybindings - All keyboard shortcuts
- Template Filters - Built-in filters
- Technical Specification - Architecture details
globals:
api_token: "{{ env.GITHUB_TOKEN }}"
pages:
repos:
data:
adapter: http
url: "https://api.github.com/user/repos"
headers:
Authorization: "Bearer {{ api_token }}"export GITHUB_TOKEN="ghp_your_token"
termstack config.yamlheaders:
X-API-Key: "{{ env.API_KEY }}"# kubectl inherits ~/.kube/config automatically
data:
adapter: cli
command: "kubectl"
args: ["get", "pods", "-o", "json"]data:
adapter: cli
command: "aws"
args: ["s3", "ls"]
env:
AWS_PROFILE: "production"
AWS_REGION: "us-west-2"→ See Full Authentication Guide
# Download binary or build from source
cargo build --release
# Run example
termstack examples/dog-api.yamlversion: v1
app:
name: "My First TUI"
start: main
pages:
main:
title: "Hello, TermStack!"
data:
adapter: cli
command: "echo"
args: ['[{"message": "Welcome!", "status": "awesome"}]']
items: "$[*]"
view:
type: table
columns:
- path: "$.message"
display: "Message"
- path: "$.status"
display: "Status"- Start here: Main README
- Try examples:
examples/dog-api.yaml,examples/kubernetes-cli.yaml - Learn auth: Authentication Guide
- Build real apps: GitHub Example
- Architecture: Technical Specification
- Performance: Optimization Docs
- Memory: Deep navigation with LRU cache (auto-enabled)
Browse repositories, issues, and pull requests with the GitHub REST API.
Features: Bearer token auth, multi-page navigation, conditional styling
Browse S3 buckets, EC2 instances, and Lambda functions using AWS CLI.
Features: Profile/region support, credential files, status indicators
k9s-style interface for Kubernetes resources.
Features: Auto-auth via kubectl, logs streaming, resource actions
version: v1
app:
name: "App Name"
globals:
api_key: "{{ env.API_KEY }}"
start: main_page
pages:
main_page:
title: "Page Title"
data:
adapter: http # or cli, stream, script
url: "https://api.example.com/data"
headers:
Authorization: "Bearer {{ api_key }}"
items: "$.data[*]"
view:
type: table
columns:
- path: "$.name"
display: "Name"| Adapter | Use Case | Auth Method |
|---|---|---|
http |
REST APIs | Headers (Bearer, API Key, Basic) |
cli |
Command-line tools | Environment vars, credential files |
stream |
Real-time logs | Same as CLI |
script |
Custom scripts | Environment vars |
| View | Use Case | Features |
|---|---|---|
table |
List data | Columns, sorting, filtering, styling |
text |
Details | Syntax highlighting (YAML, JSON, etc.) |
logs |
Streaming | Follow mode, wrapping, ANSI colors |
"401 Unauthorized" → Check your API token
"Command not found" → Install CLI tool (kubectl, aws, gh)
"Template error" → Verify environment variable is set
"Empty results" → Check JSONPath expression in items:
- Examples: Browse
examples/directory for working configs - GitHub Issues: Report bugs at github.com/pa/termstack
- Authentication: Complete Auth Guide
✅ Use {{ env.VAR }} for secrets
✅ Add *.secrets.yaml to .gitignore
✅ Use read-only credentials
❌ Never commit tokens to git
- Auto-refresh:
refresh_interval: "5m" - Timeouts:
timeout: "30s" - Memory: LRU cache auto-manages deep navigation
# Validate config
termstack --validate config.yaml
# Verbose output
termstack --verbose config.yaml| Feature | Status | Example |
|---|---|---|
| HTTP APIs | ✅ | GitHub |
| CLI Tools | ✅ | AWS, kubectl |
| Environment Variables | ✅ | {{ env.VAR }} |
| Template Engine | ✅ | Tera templates |
| Multi-page Navigation | ✅ | Context passing |
| Conditional Routing | ✅ | Based on data |
| Actions | ✅ | Commands, HTTP, navigation |
| Styling | ✅ | Colors, conditions |
| Streaming Logs | ✅ | Follow mode |
| Auto-refresh | ✅ | Configurable intervals |
-
Pick a data source:
- REST API? → Authentication Guide
- CLI tool? → AWS Example
-
Start with a template:
- GitHub API? → Copy this
- AWS? → Copy this
- Custom? → See README
-
Test and iterate:
termstack --validate config.yaml termstack config.yaml
- Authentication: Complete guide with all methods
- GitHub Integration: Step-by-step with token setup
- AWS Integration: Multiple services with profiles
Made with ❤️ by the TermStack community
Build terminal UIs without writing code