exoshell/docs/PHASES.md

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, and quiet.
  • 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.