7.3 KiB
Exoshell Phases
This roadmap turns the project vision into concrete build phases. The phases are intentionally ordered from the smallest useful shell-adjacent assistant toward the broader cognitive shell described in README.md and docs/DESIGN.md.
Phase 1: Shell-Adjacent Model Chat
Goal: ship a usable terminal program that lets a user talk to a model from PowerShell, bash, zsh, and similar shells without replacing the shell.
Core features:
- CLI entry point, likely
exoshell, that runs as a normal terminal application. - Provider configuration for at least one OpenAI-compatible backend.
- Local-first-compatible model adapter interface, even if the first implementation targets one backend.
- Interactive chat loop with streaming responses.
- Basic command suggestion formatting that distinguishes prose, shell commands, and warnings.
- Explicit copy/paste-oriented workflow: Exoshell suggests commands, the user remains responsible for execution.
- Cross-platform terminal behavior on Windows, macOS, and Linux.
- Shell-family awareness for PowerShell versus POSIX-like shells.
- Basic session transcript saved as markdown.
- Minimal config file for provider, model, default shell family, and notebook location.
- Clear error handling for missing API keys, provider failures, and interrupted requests.
User experience:
-
User should be able to run "exo this is a prompt" and get a response, the program exiting
-
User should be able to run exo (without a prompt) and have an open session, or "exo this is a prompt --stay" (or a more appropriate flag) to keep the shell/conversation open
-
User should be able to pipe (bash) or powershell equivalent into exo and have it treated as a prompt, with the additional context of the command run that sent the pipe, cwd, etc.
- For example, "ls | exo" should send a prompt similar to "{"command": "ls", "stdout": "foo bar baz", "cwd": "/foo/bar"}" and any relevant system prompts Non-goals:
-
PTY control of the user's shell.
-
Hotkeys that inject commands into the shell.
-
Ambient context collection.
-
Tree-sitter repo indexing.
-
Long-term memory.
-
Stances and personalities beyond a fixed default behavior.
-
Autonomous command execution.
Exit criteria:
- A user can install/run Exoshell, configure a model backend, ask for help from a terminal, receive command suggestions appropriate to PowerShell or bash/zsh, and save the session transcript.
- The implementation has a small automated test suite for provider abstraction, shell-family prompt behavior, config loading, and transcript writing.
Phase 2: Context, Modes, and Operator Controls
Goal: make Exoshell feel like an operational overlay instead of a generic chat client.
Core features:
- Explicit context commands for adding files, command output, directory summaries, and pasted logs.
- Session-scoped context panel or context summary visible in the TUI.
- Stances such as
operator,audit,teach, andquiet. - Hotkeys for accepting, copying, explaining, and discarding suggested commands.
- Safer command suggestion UI with destructive-command detection and confirmation language.
- Context budget management with visible token or character estimates.
- Shell-specific command rendering and explanation for PowerShell and POSIX-like shells.
- Notebook improvements: title, timestamps, model metadata, commands suggested, and user-marked discoveries.
- Basic configuration profiles for different providers and shells.
Non-goals:
- Passive screen watching.
- Full PTY embedding.
- Repository-wide semantic indexing.
- Long-term memory outside user-controlled markdown/log files.
Exit criteria:
- A user can deliberately attach context, switch stance, inspect what context is being sent, and act on suggestions through predictable terminal controls.
Phase 3: Repo Awareness and Operational Notebooks
Goal: give Exoshell useful project awareness while keeping memory inspectable and scoped.
Core features:
- Repo detection and project-root selection.
- File tree summaries with ignore rules.
- Structural parsing for common languages using tree-sitter where practical.
- Commands to add source files, symbols, recent git changes, and test output to context.
- Markdown notebooks scoped by global, repo, task, and session.
- Searchable operational notes and discoveries.
- Runbook generation from session notes.
- Diff-oriented patch suggestions that require user review.
- Better uncertainty reporting through explicit signal strength.
Non-goals:
- Hidden long-term behavioral profiling.
- Blind patch application.
- Autonomous multi-file rewrites.
Exit criteria:
- A user can open a repo, ask informed questions about local code and recent command output, preserve useful notes, and generate reviewable runbooks or patch suggestions.
Phase 4: Follow Mode and Shell Integration
Goal: let Exoshell observe explicit shell activity and provide contextual help without becoming a replacement shell.
Core features:
- PTY or shell-hook integration strategy for supported environments.
- Follow mode that can ingest selected command history, stdout/stderr snippets, current directory, and exit status.
- User-visible controls for what is observed and retained.
- Hotkey workflows for sending command output to Exoshell.
- Optional paste-to-shell and paste-and-run flows with clear confirmation boundaries.
- Command outcome interpretation and next-step suggestions.
- Per-shell integration docs for PowerShell, bash, zsh, and fish.
Non-goals:
- Covert monitoring.
- Unreviewed execution.
- Replacing the user's shell configuration.
Exit criteria:
- A user can work in their normal shell while Exoshell follows explicitly permitted context and offers useful, nonintrusive operational guidance.
Phase 5: Tuning, Extensibility, and Local-First Depth
Goal: make Exoshell configurable, hackable, and effective with weaker local models.
Core features:
- Robust local model support through OpenAI-compatible local servers and/or dedicated adapters.
- Prompt and stance customization.
- User-editable command policies and safety rules.
- Extension points for tools, context providers, and notebook processors.
- Model routing by task type.
- Context compression and retrieval tuned for smaller models.
- Export/import of user configuration and notebooks.
- Advanced visual themes that remain restrained and terminal-native.
Non-goals:
- Cloud lock-in.
- Manager analytics.
- Personality behavior that compromises operational clarity.
Exit criteria:
- A technical user can tune Exoshell to their environment, run local-first workflows, and extend context/tool behavior without modifying core code.
Phase 6: Mature Cognitive Shell Overlay
Goal: converge on the broader vision: a calm, inspectable, practitioner-oriented cognitive shell environment.
Core features:
- Mature cockpit-style TUI with dense but readable operational instrumentation.
- Stable shell integrations across major platforms.
- High-quality repo, session, task, and notebook workflows.
- Reviewable command, patch, and runbook pipelines.
- Strong safety posture around destructive commands and hidden state.
- Comprehensive docs for installation, configuration, shell integration, model backends, stances, notebooks, and local-first operation.
- Packaging and release automation.
Exit criteria:
- Exoshell is a dependable daily-driver assistant for terminal-native practitioners who want AI augmentation while preserving control and understanding.