Caudata 🦎

August 8, 2026 Β· View on GitHub

Build and Release License: MIT

Caudata is a collaborative, zero-config multi-server log streamer, real-time metrics dashboard, and high-performance TUI engine. It aggregates and streams real-time logs from multiple remote Linux servers securely over SSH config profiles, as well as the local machine, without installing any agents on remote hosts.

⭐ If you like this project, star it on GitHub β€” it helps a lot!

Features β€’ Performance & Benchmarks β€’ Installation β€’ Quick Start β€’ CLI Options β€’ Keybindings & Mouse Controls β€’ Configuration β€’ Alternatives


Caudata TUI Demo

Tired of SSH-ing into 5 different servers just to tail Docker logs? Caudata brings them all (and your local setup) into a single, responsive terminal dashboard.

  • Zero-Agent SSH: Connects seamlessly via ~/.ssh/config or manual settings. No remote agents or daemons required.
  • Local Machine Monitoring: Monitor local containers and system services via direct connection.
  • Container Auto-Discovery: Auto-discovers Docker containers and reconnects log streams on container rebuilds/restarts.
  • Docker Management: Control containers directly β€” Start, Stop, Restart, Kill, Inspect, and Remove.
  • System Services & Custom Logs: Stream Systemd (Linux), Launchd (macOS), or custom file paths.
  • Real-time Metrics: Live CPU, RAM, and disk monitoring for hosts and granular stats for containers.
  • ⚑ Rust NIF Accelerated Engine: ~270k lines/s sustained ingest and 100k–530k lines/s across NIF parse/sanitize operations, with sub-element highlighting powered by Rustler.
  • ⏱️ Zero-Latency ETS Direct Read: ETS-backed log buffers for non-blocking snapshot reads.
  • πŸ–±οΈ Mouse & Visual Controls: SGR mouse support for scroll wheeling, drag-to-copy, sidebar clicking, footer action bar, and modal backdrop closing.
  • Development Web View: Render the exact TUI inside a web browser via Phoenix LiveView.
  • Tailscale VPN Integration: Connect to Tailscale hosts without a system daemon.
  • Single-Binary Packaging: Self-contained Burrito executable (~13 MB binary, ~84 MB idle RAM).
  • Self-Upgrades: Stay up to date with caudata upgrade.

πŸš€ Performance & Benchmarks

Caudata is engineered for ultra-low memory footprint and high 60 FPS TUI scrolling over heavy log streams.

Benchmark Matrix (Apple M2, 8GB RAM, Elixir 1.19.5 + Erlang 28.5 + Rust NIF)

Component / TaskBefore OptimizationAfter OptimizationImprovementRAM Footprint
ConfigStore.put_setting91,340 ops/s (OS :emfile errors)726,010 ops/sπŸš€ 8.0x Faster (SαΊ‘ch 100% OS errors)0.30 KB
LogSanitizer.process_chunk39,490 chunks/s123,610 chunks/sπŸš€ 3.1x Faster⬇️ 1.50 KB (-90.1% RAM)
LogFormatter (JSON Parsing)29,800 lines/s111,970 lines/sπŸš€ 3.8x Faster⬇️ 5.61 KB (-52.6% RAM)
LogFormatter (Text SubHighlight)18,590 lines/s49,050 lines/sπŸš€ 2.6x Faster⬇️ 4.12 KB (-68.3% RAM)
LogStore.get_snapshot1,050 ops/s (952 ΞΌs latency)5,150 ops/s (121 ΞΌs latency)πŸš€ 4.9x Faster0.71 KB
ViewHelper.get_displayed_logs7,434.52 KB / filter4.59 KB / filterπŸ’£ 1,620x RAM Reduction (-99.94%)4.59 KB
Production Binary RAM Footprint~98 MB (mix run dev)~84 MB (Burrito binary, +S 2:2)🧠 ~14% lower via release tuning (strip_beams, exclude_apps, +S 2:2)~84 MB

Installation

Run the following command to download and install the pre-compiled binary:

curl -fsSL https://raw.githubusercontent.com/quaywin/caudata/main/install.sh | sh

Running/Building from Source

Caudata uses mise to manage development runtimes:

# Clone the repository
git clone https://github.com/quaywin/caudata.git
cd caudata

# Install required tools (Erlang, Elixir, Zig, and Rust)
mise install

# Install Elixir dependencies
mix deps.get

# Run development mode
mix run --no-halt

To build a standalone executable release using Burrito:

# Build for your current host architecture
mix release --overwrite

# Build for a specific target platform
BURRITO_TARGET=macos_aarch64 mix release --overwrite

Note

Available target profiles include: macos_x86_64, macos_aarch64, linux_x86_64.


Quick Start

  1. Launch Caudata:
    caudata
    
  2. Add Connections:
    • Remote Server (SSH): Caudata automatically scans your ~/.ssh/config. To add custom servers manually, press a in the TUI, select + Manual SSH Connection, and fill in the details.
    • Local Machine: Press a in the TUI, select + Local Machine Connection, and enter your local sudo password (optional, required if your local Docker or system logs require root permissions).
  3. Connect & Stream: Use the TUI sidebar to select a host or local connection, press Enter to connect, and Caudata will auto-discover running Docker containers and services. Toggle active log streams using Space.

CLI Options

# Show help menu
caudata --help        # or: caudata -h

# Show current version
caudata --version     # or: caudata -v

# Run the web UI server on port 4000
caudata web

# Run the web UI server on a custom port and address
caudata web --port 8080   # or: caudata web -p 8080
CAUDATA_IP=0.0.0.0 caudata web

# Run the web UI server with user-space Tailscale VPN tunneling
caudata web --port 8080 --tailscale --authkey <your-tailscale-key> --tailscale_port 80

# Automatically upgrade to the latest release binary
caudata upgrade

Keybindings & Mouse Controls

Press ? inside the TUI to open the full interactive keybinding reference.

πŸ–±οΈ Mouse Controls

GestureLocationAction
Scroll WheelLogs PaneScroll log stream (auto-fetches history at top)
Drag & SelectLogs PaneHighlight log range & auto-copy to OS clipboard on release
Left ClickSidebarSelect server/container & start stream
Left ClickFooter BarTrigger action shortcut ([a] Add, [s] Settings, [?] Help, etc.)
Left ClickModalsSwitch tabs, pick actions, or click backdrop to close (Esc)

Global

KeyAction
1 / h / ←Jump focus to Sidebar panel
2 / l / β†’Jump focus to Logs panel
TabToggle active panel focus / switch sidebar tabs
a / AOpen the Add Connection modal
s / SOpen the Global Settings modal
f / FToggle log panel full-screen view
t / TToggle displaying logs with timestamps
?Toggle the Help modal
q / Q / Ctrl+CExit Caudata
KeyAction
↑ / ↓ (or k / j)Navigate server & container tree
EnterConnect to server / select container to stream
SpaceToggle log stream on/off
m / MOpen Docker Container Actions (Start/Stop/Restart/Kill/Inspect/Remove)

Logs Pane (Panel 2: Log Stream)

KeyAction
↑ / ↓ (or k / j)Scroll logs up/down (auto-accelerates on hold)
g / GJump to top (g) or bottom (G) of logs
PageUp / PageDownScroll logs page-by-page
/Enter live regex filter search mode
v / VEnter Visual Select Mode (extend selection with j/k)
y / YCopy all displayed logs (or selected lines in Visual Mode) to clipboard
oSwap anchor/cursor ends (in Visual Select Mode)
EscClear active filter regex / exit visual mode

Configuration

Settings and connection profiles are stored in an ETS-backed database at ~/.caudata/config.db. Caudata automatically defaults the log buffer capacity to 10,000 lines per stream with zero-lag virtualized rendering to maintain low memory footprint and high 60 FPS performance.

Environment Variables

VariableDescriptionDefault
CAUDATA_CONFIG_PATHDirectory or file path for the configuration database.~/.caudata/config.db
CAUDATA_TUIExplicitly enable or disable the Terminal UI (true/false).Auto-detected
CAUDATA_IPBind address for the web server (e.g. 127.0.0.1 or 0.0.0.0).127.0.0.1
PORTPort to run the web server on when running caudata web.4000
TAILSCALE_AUTHKEYTailscale authorization key for VPN integration.None

Alternatives

If you are looking for other tools to monitor or view logs, here is how Caudata compares to existing open-source options:

ProjectInterfacePrimary FocusMulti-Server (SSH)Docker Container Auto-DiscoveryPeak Throughput / RAM
CaudataTUI & WebAgentless Multi-Server Log/MetricsYes (native SSH config)Yes (remote/local)~270k lines/s ingest (~84 MB RAM)
MultiTailTUIAggregated file/command logsYes (manual pipes)No~50k lines/s (~80 MB RAM)
DozzleWebDocker container logsYes (requires agents)Yes (needs setup)~50k lines/s (~70 MB RAM)
lnavTUILog parsing & SQL queryNo (mainly local)No~300k lines/s (~80 MB RAM)
LazydockerTUILocal Docker managementNoYes (local only)~40k lines/s (~100 MB RAM)