membrane

record everything a command does

membrane wraps a process and keeps what it did: terminal bytes, decrypted https, libc calls, dns, subprocesses. one stream of structured events, in a sqlite file.

a log has what you thought to log. a capture has the rest โ€” the env var a dependency read at import, the file it wrote to /tmp, the request your agent made while you were looking somewhere else. you don't have to know what you're looking for before you run it.

$ curl -fsSL https://membrane-systems.com/install.sh | MEMBRANE_KEY=<key> sh

$ membrane wrap -t all -s sqlite=run.db -- your-command
$ sqlite3 run.db "select category, type, count(*)
                  from events group by 1, 2"

what it records

file