Shannon
An AI-first shell built on nushell, with seamless bash compatibility and AI chat — all in one session.
Named after Claude Shannon, the father of information theory.
The Idea
Nobody remembers every shell command. Shannon lets you type in plain English and have an LLM translate your intent into the right command. When you need precise control, press Shift+Tab to drop into bash — then Shift+Tab back.
[nu] ~/project > ls | where size > 1mb
...
[nu] ~/project > <Shift+Tab>
[brush] ~/project > grep -r "TODO" src/
...
[brush] ~/project > <Shift+Tab>
[ai] ~/project > how do I find rust files modified today?
You can use `fd` or `find`:
fd --extension rs --changed-within 1d
Features
AI Chat
- Shift+Tab into
[ai]mode — ask questions in plain English - Configurable provider (Anthropic by default)
- Context-aware — the LLM knows your cwd and OS
- Conversational — follow-up questions remember context
Nushell at the Core
Shannon IS nushell — you get all nushell features out of the box:
- Structured data (tables, records, lists)
- Powerful pipelines (
ls | where size > 1mb | sort-by modified) - Job control (Ctrl+Z,
job unfreeze) - Native completions, multiline editing, plugins
- Hooks, keybindings, themes — all configurable via
config.nu
Bash Compatibility
- Shift+Tab to switch to
[brush]mode for bash commands - Bash syntax highlighting (tree-sitter-bash, Tokyo Night colors)
- Environment variables sync between nushell and bash automatically
env.shfor bash-style setup (PATH, API keys) — follow any tutorial that says "add this to your .bashrc"
Environment Sync
- Environment variables, cwd, and exit code synchronized across mode switches
- Set
export FOO=barin bash, switch to nushell —$env.FOOworks - Set
$env.BAZ = "qux"in nushell, switch to bash —echo $BAZworks - PATH and other typed env vars converted automatically via
ENV_CONVERSIONS
Configuration
Shannon uses ~/.config/shannon/ (respects XDG_CONFIG_HOME):
| File | Purpose |
|---|---|
env.sh |
Bash environment setup — PATH, env vars, API keys (runs first) |
env.nu |
Nushell env setup (runs after env.sh) |
config.nu |
Nushell config — keybindings, colors, hooks, completions |
history.sqlite3 |
SQLite command history |
No config files are required — shannon works out of the box.
Shannon-specific settings
Add to env.nu:
$env.SHANNON_CONFIG = {
TOGGLE: ["nu", "brush", "ai"]
AI_PROVIDER: "anthropic"
AI_MODEL: "claude-sonnet-4-20250514"
AI_API_KEY_ENV: "ANTHROPIC_API_KEY"
}
Installation
Or build from source:
Note: --recursive is needed to fetch the nushell, brush, and reedline
submodules.
License
MIT