A tool for recording and editing terminal sessions with precise timestamp control.
recorder/
├── src/lib
│ ├── types.go # Shared types (TerminalFrame, Command, etc.)
│ ├── frame_parser.go # Parsing & command extraction logic
│ ├── recorder/
│ │ ├── main.go
│ │ ├── terminal_recorder.go
│ │ ├── terminal_player.go
│ │ ├── media_recorder.go
│ │ └── session_recorder.go
│ └── editor/
│ ├── main.go
│ └── ncurses_editor.go
cd src && go get trecscd src/recorder
go build -o recordercd src/editor
go build -o editor./recorder record
# Options: -audio, -screen, -name <session-name>, etc../recorder play -file recordings/<session-id>/terminal.jsonl./editor view -file recordings/<session-id>/terminal.jsonlTerminal recordings are stored as JSON Lines (terminal.jsonl):
{"timestamp":0,"data":"...","width":0,"height":0}
{"timestamp":50,"data":"...","width":0,"height":0}Each line is a TerminalFrame with:
timestamp: milliseconds since recording startdata: terminal output/input datawidth,height: terminal dimensions
Both applications use shared code in src/:
types.go: Common type definitionsframe_parser.go: Recording parsing and command extraction