tmux observer
Python 95%
Shell 3%
Makefile 2%
<1%

README.md

solstone-tmux #

Standalone tmux terminal observer for solstone. Experiences your tmux sessions along with you, accumulating observations to a local cache and syncing them to your journal.

Install #

solstone (the journal) must already be installed and running on the host this observer reports to. If it isn't, start here: https://solstone.app/install.

On the machine that will host the observer:

pipx install solstone-tmux
solstone-tmux install-service
solstone-tmux setup

setup registers the observer against your journal over the local http://localhost:5015 link, so there's no URL to type. If this machine reaches your solstone host directly instead, run solstone-tmux setup --server-url <journal-url>.

From source #

For working on solstone-tmux itself:

git clone https://github.com/solpbc/solstone-tmux.git
cd solstone-tmux
make install-service

This installs the solstone-tmux command via pipx and writes the systemd user unit. The manual setup steps below cover registration and config.

Manual setup #

If solstone-tmux setup isn't a good fit (no interactive shell, scripted provisioning, custom config layout), work through these steps by hand.

1. Register an observer with your journal #

journal observer create solstone-tmux

This prints the journal URL and API key. You'll need both for the next step.

2. Write the config #

Create ~/.local/share/solstone-tmux/config/config.json:

{
  "server_url": "http://localhost:5015",
  "key": "<api-key-from-journal-observer-create>",
  "stream": "<hostname>.tmux",
  "capture_interval": 5,
  "segment_interval": 300
}

Set stream to <your-hostname>.tmux (e.g., fedora.tmux, archon.tmux). This matches the stream naming convention used by the built-in observers.

Alternatively, solstone-tmux setup registers against your journal automatically — over the local http://localhost:5015 link by default, or pass --server-url for a direct-to-remote journal.

3. Install the systemd service #

solstone-tmux install-service

This writes the unit file to ~/.config/systemd/user/solstone-tmux.service, enables it, and starts it.

4. Verify #

systemctl --user status solstone-tmux
solstone-tmux status
journal observer list  # should show the observer as "connected"

Manual run #

solstone-tmux run         # foreground, ctrl-c to stop
solstone-tmux run -v      # verbose/debug logging

How it works #

  • Polls all active tmux sessions every 5 seconds for content changes
  • Accumulates observations in 5-minute segments under ~/.local/share/solstone-tmux/captures/
  • Background sync service uploads completed segments to your journal
  • Emits a diagnostics-only health beacon to your journal that intentionally excludes pane content and tmux session names
  • Works offline — syncs when your journal is reachable
  • Recovers incomplete segments on startup after crashes

Commands #

Command What it does
solstone-tmux run Start capture + sync (default if no subcommand)
solstone-tmux setup Interactive config wizard
solstone-tmux install-service Install and start systemd user service
solstone-tmux status Show observer state, sync state, cache size

License #

AGPL-3.0-only. Copyright (c) 2026 sol pbc.