🔧 For SREs & DevOps

Your Wallpaper Is Your Incident Dashboard

Service health, Docker containers, Kubernetes pods, GitHub Actions, TLS expiry, and open PRs — all behind your windows, always visible, never stealing focus.

Already use k9s, lazygit, or gh-dash? QuickSheet is the ambient layer that stays on-screen behind every window.
# 5-minute setup
git clone https://github.com/cemheren/QuickSheet.git && cd QuickSheet
dotnet run -c Release --project ExcelConsole.csproj -- --desktop examples/sre-dashboard.csv
⭐ Star on GitHub Browse Extensions

What goes on the wallpaper

Add an ext: github:cemheren/quicksheet-<name> cell to install any extension. No package manager, no daemon config.

What to monitorWhat it showsExtension
Service healthHTTP ✓/✗ + latency per endpointquicksheet-health
Vendor statusGitHub / Cloudflare / npm / Vercel live pagesquicksheet-apistatus
Container healthRunning/stopped/restarting per Docker containerquicksheet-docker
Pod statusKubernetes pod state by namespacequicksheet-k8s
Port probeTCP open/closed for local portsquicksheet-portck
TLS expiryDays remaining per certificatequicksheet-tls-ext
Recent commitsLast N commits: hash, author, relative timequicksheet-gitlog
Open PRsPR count + titles per repoquicksheet-ghpr
CI/CD statusGitHub Actions workflow run statusesquicksheet-gha
System metricsCPU / RAM / disk / uptimequicksheet-sysmon
LatencyRound-trip to upstreams and DNS resolversquicksheet-ping-ext

During an incident

Five questions every on-call answers in the first 5 minutes. Now you can answer them without opening a browser tab.

On-call utilities

Two tools that come up in every auth or API routing incident.

jwtdec: eyJhbGciOiJIUzI1NiIs...

Decodes JWT header + claims locally. Flags expired tokens, annotates iat/exp/nbf. Privacy-first — no token leaves your machine. (quicksheet-jwtdec)

urlenc: https://api.example.com/path?q=...

URL-encodes or decodes with auto-detect. Useful for debugging redirect chains and malformed query strings. (quicksheet-urlenc)

cronck: 0 3 * * MON-FRI

Turns cron expressions into plain English. Document all job schedules in a column without opening a wiki. (quicksheet-cronck)

envck: JAVA_HOME

Inspect env vars in-cell. Auto-masks secrets (API keys, tokens, passwords shown as ****). (quicksheet-envck)

Runnable cells

Prefix any cell with r: to make it a one-keypress shell command. Press Enter to run; output replaces cell content.

r: kubectl get nodes
r: docker ps --format "table {{.Names}}\t{{.Status}}"
r: systemctl status nginx
r: journalctl -u myservice --since "5 min ago" --no-pager
r: curl -s https://api.example.com/health | jq .status

Why wallpaper beats a Grafana tab

Pain pointGrafana / DatadogQuickSheet wallpaper
Visible during code reviewNo (alt-tab)✓ Behind every window
Setup timeHours (datasources, panels)✓ 5 minutes (CSV + ext: cells)
Custom extension for one-off serviceRequires plugins✓ 50-line script, any language
Data leaves your machineYes (SaaS)✓ No — local subprocesses
Works offlineNo✓ Yes (local probes)
Per-team customizationDashboard-as-code (complex)✓ Edit CSV directly

Build your own in 50 lines

Don't see an extension for your specific service? The protocol is two message types: register and write. Standard-library Python, Go, or Bash is enough.

# Python skeleton — reads stdin, writes cells to stdout
import json, sys

line = input()
msg = json.loads(line)
if msg["type"] == "register":
    print(json.dumps({"type":"register","prefix":"myext","width":1,"height":3}))
    sys.stdout.flush()

for line in sys.stdin:
    msg = json.loads(line)
    if msg["type"] == "activate":
        cells = [{"r":0,"c":0,"v":"🟢 healthy"},{"r":1,"c":0,"v":"latency: 12ms"}]
        print(json.dumps({"type":"write","id":msg["id"],"cells":cells}))
        sys.stdout.flush()

Full spec: docs/extension-protocol.md