A new kind of terminal AI coding agent — built on OpenTUI (Solid), with a hand-rolled, dependency-light multi-provider engine.
Rounded, animated, mouse-first. Dark-grey theme with mode-colored accents. A cute hyperactive mascot named Friday lives above your composer and reacts to what the agent is doing.
bun install
bun run friday # launch the TUIOn first run, a short onboarding appears, then the /model connector — pick a provider, paste a
key, choose a model. Then just talk to Friday.
Requires Bun ≥ 1.3.
- Agentic loop — streaming, tool-calling, human-in-the-loop, multi-step until done, with
context auto-compaction (~80% of the window, or
/compact) so long sessions never wall out. - Live todos — the agent maintains a task list (
todo_write) shown in the right panel. - Parallel background sessions — each session runs its own loop concurrently; switch freely while others keep working and notify you when they finish or need input.
- LSP grounding — after every edit, real compiler diagnostics are fed back so the model
self-corrects;
lsp_hover/lsp_definition/lsp_symbolstools and@Symbolmentions (typescript-language-server, pyright, gopls, rust-analyzer — auto-detected, skipped if absent). - Hooks — Claude-Code-parity lifecycle hooks (PreToolUse/PostToolUse/UserPromptSubmit/Stop/ SessionStart/SubagentStop/PreCompact/Notification) with matchers and a JSON stdin/stdout contract.
- Git — branch + diffstat in the panel;
/commitdrafts a message from the diff for you to edit/approve, then commits (local-only). - Images —
@image.pngmentions attach as vision input to multimodal models. - Prompt caching — Anthropic system/tools cached; OpenAI/Gemini prefix caching — cheaper repeats.
- Cost meter — live tokens + $ + a context-window gauge.
- Providers (zero-SDK) — one OpenAI-compatible adapter (OpenAI, OpenRouter, Groq, Kimi/Moonshot, MiniMax, DeepSeek, xAI, OpenCode Zen, Together, Ollama, llama.cpp), plus Anthropic and Google Gemini. Model catalog from models.dev with an offline snapshot.
- Modes —
plan/default/accept-edit/yolo, cycled with Shift+Tab. Per-mode permission posture, plus bash allow/deny lists and risky-command warnings. - Tools — read, write, edit, multi-edit, ls, glob, grep, bash, webfetch, websearch, ask_user, skill, task (read-only sub-agent), todo_write, lsp_*.
- Sessions — multi-session tabs,
bun:sqlitepersistence,Ctrl+1-9to switch, clean-exit screen, resume withfriday -s <id>orfriday -c. - Commands & context — slash commands +
Ctrl+Kpalette,/+@autocomplete,@filementions, FRIDAY.md / AGENTS.md project context, markdown skills (.friday/skills). - MCP — connect stdio or streamable-HTTP MCP servers; their tools merge into the registry.
- Animated, mouse-first — a real motion layer (easing, modal pop-ins, accordions, item reveals)
with a
FRIDAY_REDUCED_MOTION=1fallback; click panels/tabs/cards, drag borders, copy-on-select.
Everything lives under ~/.friday/ (override with FRIDAY_HOME):
auth.json— provider keys (managed by the/modelmodal).config.json— selected model/effort/mode, plus optionalmcp,hooks, andbashblocks:{ "mcp": { "my-server": { "type": "stdio", "command": ["my-mcp-server"] }, "remote": { "type": "http", "url": "https://example.com/mcp" } }, "hooks": { "PreToolUse": [{ "matcher": "bash", "command": "./gate.sh" }], "PostToolUse": [{ "matcher": "write|edit", "command": "prettier --write ." }] }, "bash": { "deny": ["rm -rf", "git push"], "allow": ["npm test", "ls"] } }skills/,commands/— user-level markdown skills and slash commands. Project-level equivalents live in.friday/skillsand.friday/commands.
bun test # all packages
bun run typecheck # tsc across the workspace| Package | Purpose |
|---|---|
@friday/shared |
shared types, theme + mode tokens, engine↔UI bus contract |
@friday/core |
engine: runners, agent loop, compaction, hooks, git, sessions, modes, permissions |
@friday/providers |
zero-SDK provider wire adapters + model catalog |
@friday/tools |
built-in agent tools |
@friday/mcp |
MCP client (stdio + streamable-http) |
@friday/lsp |
language-server client (diagnostics, hover, definition, symbols) |
@friday/tui |
OpenTUI (Solid) interface + motion layer |
@friday/cli |
binary entry point |
- Amazon Bedrock (SigV4) provider.
- Split-pane (tmux-style) multiple sessions visible at once.
- Configurable keybindings, theme variants, OS-level bash sandboxing.