Skip to content

dotcommander/glog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GLog

Release Build Go Version License


You could spin up Elasticsearch, Logstash, and Kibana. Configure a Loki cluster. Pay Datadog per gigabyte. Set up Fluentd with seventeen plugins.

Or: run one binary. Ship logs. Debug with a live workspace.

GLog is a local-first logging and debugging workspace that runs on SQLite and ships as a single binary. It gives small teams and coding agents a live dashboard, structured log search, rollups, repeated-pattern grouping, exports, and an inbox for notes, tasks, bugs, questions, and handoffs.

GLog dashboard

30-second demo

# Install
curl -fsSL https://raw.githubusercontent.com/dotcommander/glog/main/scripts/install.sh | sh

# Verify the install and see exact next steps
glog doctor

# Start the server (database creates itself)
glog serve

# In another terminal: register a host, get an API key
glog host register --server http://localhost:6016 --name my-server
# Writes config to ./glog.json — no manual setup

# Ship a log
glog log "Deployment complete" --level info --field version=2.1.0

# Pipe anything
tail -f /var/log/syslog | glog log --stream --level info

Server opens at http://localhost:6016. Dashboard and API, same port.

Install

Binary (recommended):

curl -fsSL https://raw.githubusercontent.com/dotcommander/glog/main/scripts/install.sh | sh
glog doctor

The installer downloads the right macOS/Linux archive, installs glog into /usr/local/bin or ~/.local/bin, warns if that directory is not on PATH, and prints the first server/register/log commands.

You can also grab archives manually from the releases page. macOS, Linux, and Windows builds are published for amd64 and arm64.

Go install:

go install github.com/dotcommander/glog/cmd/glog@latest

From source:

git clone https://github.com/dotcommander/glog && cd glog
make          # Builds frontend + backend, starts on :6016
make install  # Puts glog in ~/go/bin

CLI

glog serve                              # Start server (:6016 by default)
glog serve --addr :8080 --db logs.db    # Custom port and database path
glog serve --durability strict          # SQLite sync profile: strict, balanced, fast

glog host register --name prod-api      # Register host, saves config to ./glog.json
glog host list                          # Show registered hosts

glog log "Something happened"           # Send a log (level: info)
glog log --level error "Disk full"      # Explicit level
glog log --field region=us-east-1 "OK"  # Attach structured fields

journalctl -f | glog log --stream       # Stream stdin, batched at 100 lines
cat app.log | glog log --level warn     # Pipe a file

glog migrate --db glog.db               # Run database migrations
glog inspect db --db glog.db --json     # Offline database diagnostics
glog doctor                             # Check PATH, config, server, and next steps
glog inbox add "Follow up on flaky test" # Leave an agent note/task
glog inbox list                         # Show open agent inbox items
glog inbox done 123                     # Complete an inbox item
glog version                            # Print version and build time

Configuration resolves in order: flags, then GLOG_SERVER/GLOG_API_KEY env vars, then ./glog.json.

For LLM coding agents

Use GLog as your local debugging memory when a task spans commands, browser checks, or multiple agent sessions.

# 1. Find or start the local server.
glog doctor
glog serve

# 2. Register the current workspace once, then reuse ./glog.json.
glog host register --server http://localhost:6016 --name "$(basename "$PWD")"

# 3. Send useful evidence while debugging.
glog log --level info "starting frontend smoke test" \
  --field repo="$(basename "$PWD")" \
  --field command="bun run build"

# 4. Leave durable follow-up work in the agent inbox.
glog inbox add "Recheck SSE reconnect after hub change" \
  --kind task \
  --priority normal \
  --repo "$(basename "$PWD")" \
  --session "$USER-$(date +%Y%m%d-%H%M%S)" \
  --tag sse \
  --body "Evidence belongs in logs. This item is the next action."

# 5. Before finishing, review open work and close completed items.
glog inbox list --status open --repo "$(basename "$PWD")"
glog inbox done 123

Agent rules of thumb:

  • Put runtime evidence, command output summaries, errors, and browser observations in logs.
  • Put decisions, blocked questions, next tasks, bugs, and handoffs in the inbox.
  • Include repo, session, and focused tags so future agents can filter quickly.
  • Link the exact error text, fingerprint, or log ID in the inbox body when a task depends on evidence.
  • Mark inbox items done when the task is handled; leave blocked questions open with --kind question --priority high.

Full reference: Agent inbox.

API

Hosts

Method Path Auth
POST /api/v1/hosts - Register host, returns API key
GET /api/v1/hosts - List all hosts
GET /api/v1/hosts/{id} - Get host details
GET /api/v1/hosts/{id}/stats - Host log statistics

Logs

Method Path Auth
POST /api/v1/logs Bearer Create log entry
POST /api/v1/logs/bulk Bearer Bulk create (up to 1000)
GET /api/v1/logs - Query with filters
GET /api/v1/logs/{id} - Get single log
GET /api/v1/stats/logs - Hourly log count buckets
GET /api/v1/stats/fingerprints - Hourly fingerprint buckets

Agent Inbox

Method Path Auth
GET /api/v1/inbox - List notes/tasks/questions/handoffs
POST /api/v1/inbox - Create inbox item
GET /api/v1/inbox/{id} - Get inbox item
PATCH /api/v1/inbox/{id} - Update inbox item
DELETE /api/v1/inbox/{id} - Delete inbox item
POST /api/v1/inbox/{id}/done - Mark inbox item done

Stream & Export

Method Path Auth
GET /api/v1/events - SSE live stream
GET /api/v1/export/{json,csv,ndjson} Bearer Export logs
GET /health - Health check

Auth means Authorization: Bearer glog_v1_<key> — the key you get from host register.

# Create a log via curl
curl -X POST http://localhost:6016/api/v1/logs \
  -H "Authorization: Bearer glog_v1_<key>" \
  -H "Content-Type: application/json" \
  -d '{"level":"error","message":"Payment failed","fields":{"order_id":"abc123"}}'

# Stream live events
curl -N http://localhost:6016/api/v1/events

Under the hood

Go backend. Svelte 5 frontend. SQLite in WAL mode. Everything runs from one binary.

┌─────────────────────────────────────────────────┐
│  CLI (cobra)          Browser (Svelte 5)        │
│  glog log/host/serve  localhost:6016            │
└──────────┬────────────────────┬─────────────────┘
           │                    │
     ┌─────▼────────────────────▼─────┐
     │       HTTP / SSE (chi/v5)      │
     │  handlers → repos (no service  │
     │  layer, no ceremony)           │
     └──────────────┬─────────────────┘
                    │
          ┌─────────▼─────────┐
          │   SQLite (WAL)    │
          │   single file     │
          │   embedded migrations │
          └───────────────────┘

Handlers call repositories directly. The domain layer defines entities and interfaces — no infrastructure imports. Swapping SQLite for PostgreSQL means writing new repository implementations. Nothing else changes.

cmd/glog/           CLI and server entry point
internal/
  domain/           Entities, repository interfaces, pattern matching
  infrastructure/   HTTP handlers, SQLite repos, SSE hub
web/                Svelte 5 frontend (built into web/build/)

Philosophy

Small tools should stay understandable. Your logs belong on your hardware. The database is a single file you can cp to back up. The server is a single binary you can scp to deploy.

GLog is intentionally modest infrastructure: start the binary, point your apps or coding agents at it, inspect the evidence, and leave durable follow-up work in the inbox when the debugging thread needs to continue.

Why not X?

Tool What you get What it costs
ELK Stack Full-text search, Kibana JVM heap tuning, three services, YAML therapy
Loki + Grafana Label-based queries Promtail sidecar, chunk storage, LogQL
Datadog / Splunk Everything, managed Per-GB pricing, vendor lock-in
Papertrail Hosted tailing, simple search Monthly bill, data leaves your network
GLog Live dashboard, rollups, exports, agent inbox One binary, SQLite, local-first

GLog is for teams and coding agents that need operational evidence without a logging platform project. If you need petabyte-scale search across a fleet of thousands, use the big tools. If you want a local, inspectable place to capture logs, spot patterns, and hand off debugging state, this is the one.

Docs

License

MIT. Because logs shouldn't require permission.

About

Self-hosted log aggregation with a real-time dashboard, multi-host API keys, and SQLite-backed storage.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors