A cognitive terminal multiplexer written in Rust. Wraps your shell and AI assistants with a dynamic HUD to prevent context-switching fatigue.
In Norse mythology, Odin had two ravens: Huginn (Old Norse: "Thought") and Muninn ("Memory"). Each day at dawn, Odin sent them flying across all nine worlds. At evening, they returned to perch on his shoulders and whisper everything they had seen and heard into his ears.
Huginn represents Thought - the active processing and analysis of information. Just as Odin's raven brought him knowledge from across the world, this tool brings context and awareness to your terminal workflow. The HUD acts as Huginn's whispers, keeping you informed without pulling you away from your task.
Muninn (Memory) would be the scrollback buffer - preserving the history of what has passed. Together, they give you both the present moment (Thought) and the past (Memory) to make better decisions.
- Terminal UI with HUD: Three-panel layout showing context and status at the top
- Shell Integration: Wraps your default shell (zsh, bash, fish) in a PTY
- Session Multiplexing: Toggle between Shell and AI assistant views with
:t - AI Assistant Support: Run Claude Code, Aider, or any CLI AI tool in parallel
- Smart HUD Status: LLM-powered TL;DR of what the AI is currently doing
- Mouse Selection: Click and drag to select text, auto-copies on release
- Scrollback Navigation: Shift+Up/Down or mouse scroll to navigate history
- Full ANSI Support: Colors, bold, italic, underline, and more
- Configurable: JSON-based configuration with native TUI settings screen
- Cross-platform: Works on macOS, Linux, and Windows
- Rust 1.75 or later
- Cargo (included with Rust)
Check your version:
rustc --versionUpdate if needed:
rustup update stablecurl -sSL https://github.com/slompo/huginn/releases/latest/download/huginn-installer.sh | shThis installs to ~/.cargo/bin/huginn.
git clone https://github.com/slompo/huginn.git
cd huginn
cargo build --releaseThe binary will be at target/release/huginn.
If build fails, try:
cargo clean && cargo build --releaseRun Huginn:
cargo run --releasePress : to enter command mode, then:
| Command | Action |
|---|---|
:t |
Toggle between Shell and AI views |
:c |
Open configuration screen |
:r |
Force HUD refresh (re-summarize) |
:q |
Quit |
:? |
Show commands |
| Action | Result |
|---|---|
| Click + Drag | Select text (auto-copies on release) |
| Scroll Up/Down | Navigate scrollback history |
| Shift + Up/Down | Navigate scrollback history |
Config screen:
| Shortcut | Action |
|---|---|
Tab / ↓ |
Next field |
Shift+Tab / ↑ |
Previous field |
Enter |
Save configuration |
Esc |
Back to main view |
Configuration is stored at ~/.config/huginn/config.json:
{
"shell_command": "zsh",
"shell_args": [],
"ai_command": "claude",
"ai_args": [],
"summarizer_command": "ollama",
"summarizer_args": ["run", "llama3.2"],
"shortcuts": {
"toggle_view": "ctrl+shift+t",
"force_refresh": "ctrl+shift+r",
"open_config": "ctrl+shift+c",
"quit_app": "ctrl+shift+q"
}
}The HUD can use an LLM to generate context-aware summaries. Configure your preferred summarizer:
Using Ollama:
{
"summarizer_command": "ollama",
"summarizer_args": ["run", "llama3.2"]
}Using Claude CLI:
{
"summarizer_command": "claude",
"summarizer_args": []
}┌─────────────────────────────────────────────────────────────┐
│ HUD (30% TL;DR | 20% Scroll | 50% AI Status) │ 3 lines
├─────────────────────────────────────────────────────────────┤
│ │
│ Main View │ Flexible
│ (Shell / AI / Config) │
│ │
├─────────────────────────────────────────────────────────────┤
│ Footer (Dynamic shortcuts) │ 1 line
└─────────────────────────────────────────────────────────────┘
- Left (30%): TL;DR of the first AI prompt or current view name
- Center (20%): Scroll indicator when navigating history
- Right (50%): AI status TL;DR (LLM-generated summary of current activity)
- Terminal UI with HUD, main view, and footer
- Configuration system with JSON persistence
- Config screen with text input fields
- Event loop with keyboard shortcuts
- Real shell integration via portable-pty
- PTY rendering in main view
- Non-blocking PTY reading with background thread
- ANSI escape sequence parsing (via vt100 crate)
- Proper color and cursor support
- Text attribute rendering (bold, italic, underline, etc.)
- Dual PTY sessions (Shell + AI)
- Toggle between Shell and AI with
:t - State preservation between views
- Both sessions process output simultaneously
- Background HUD updates via LLM (ollama, claude, etc.)
- Context extraction from terminal content
- Periodic summarization (every 30 seconds)
- Manual refresh with
:rcommand - Graceful fallback when LLM unavailable
- Mouse-based text selection with auto-copy
- Scrollback navigation (mouse and keyboard)
- Smart AI status with LLM-generated TL;DR
- ChildKiller for clean process termination
MIT License - see LICENSE for details.
Releases are automated via cargo-dist. Binaries are available for:
| Platform | Architecture |
|---|---|
| macOS | x86_64 (Intel), aarch64 (M1/M2) |
| Linux | x86_64, aarch64 |
| Windows | x86_64 |
Download from GitHub Releases.