TUI Overview
allman-tui is a re-imagined LinkedIn messenger inbox in your terminal — a thin React/Ink front-end over the allman CLI binary and its on-disk message store.
Architecture
Section titled “Architecture”- Reads (conversation list, message history, slug resolution) come straight from the JSONL/JSON files on disk. No subprocess overhead per keystroke.
- Writes (
send,sync,search) shell out to theallmanbinary so rate limiting, pre-send sync, and git commits go through the canonical path. - Live updates subscribe to
allman listen’s NDJSON event stream from a long-running subprocess.
src/ index.tsx entry point app.tsx root component, mode + state machine components/ Sidebar.tsx conversation list with inline search Thread.tsx message thread, day-grouped, word-wrapped Composer.tsx reply input StatusBar.tsx account, listen, mode, hint bar ReactionPicker.tsx inline emoji picker with search NewConversation.tsx contact-search modal TemplatePicker.tsx quick-reply template selection Help.tsx key reference overlay lib/ allman.ts file-store reader + allman binary shell-outs bundled-bin.ts extracts embedded allman binary on first run types.ts message / conversation / event shapes format.ts relativeTime, dayLabel, color hashing emoji-data.ts searchable emoji database templates.ts template loading and variable substitutionThe TUI is modal — what your keys mean depends on which mode you’re in. The current mode is shown in the status bar.
| Mode | What you can do |
|---|---|
browse | Navigate conversations, jump into other modes |
search | Filter the sidebar by name, slug, or headline |
compose | Type a reply, Enter to send, Esc to cancel |
new | Search contacts, pick one to open or draft |
command | Type a command palette command |
reactionPick | Pick an emoji reaction for the selected message |
templatePick | Choose a quick-reply template |
help | Full keybinding reference |
Binary resolution
Section titled “Binary resolution”At runtime, the TUI looks for the allman binary in this order:
ALLMAN_BINenvironment variable- The bundled binary embedded in
dist/allman-tui(production builds) allmanonPATH(dev mode)
Store discovery
Section titled “Store discovery”ALLMAN_STORE env, otherwise always $HOME/.allman. If missing or empty, the TUI prompts you to run allman login.