mirror of
https://github.com/khodges42/exoshell.git
synced 2026-06-14 18:08:37 +00:00
Create DESIGN.md
This commit is contained in:
parent
a7ea7421db
commit
b6df4635dd
575
docs/DESIGN.md
Normal file
575
docs/DESIGN.md
Normal file
|
|
@ -0,0 +1,575 @@
|
|||
Exoshell Design Document (Draft v0.1)
|
||||
|
||||
Overview
|
||||
|
||||
Exoshell is a local-first cognitive shell for practitioners.
|
||||
|
||||
It is designed for engineers, operators, hackers, and technical users who want AI augmentation without surrendering understanding, agency, or operational control.
|
||||
|
||||
Exoshell is not an autonomous coding employee.
|
||||
|
||||
It is not designed to maximize software generation throughput at the expense of comprehension.
|
||||
|
||||
It is not optimized for “vibe coding.”
|
||||
|
||||
Exoshell exists to enhance skill, preserve flow-state, increase operational awareness, and keep the human firmly in control of the machine.
|
||||
|
||||
The philosophy is simple:
|
||||
|
||||
Manual Supra, not Waymo.
|
||||
|
||||
The operator remains the pilot.
|
||||
|
||||
⸻
|
||||
|
||||
Core Principles
|
||||
|
||||
1. The Human Keeps The Controls
|
||||
|
||||
Exoshell augments operators. It does not automate them away.
|
||||
|
||||
The system should prefer:
|
||||
|
||||
* suggestion over execution
|
||||
* visibility over hidden behavior
|
||||
* review over blind action
|
||||
* composability over abstraction
|
||||
* understanding over delegation
|
||||
|
||||
Exoshell should never create the feeling:
|
||||
|
||||
“oh god, it’s doing something.”
|
||||
|
||||
The user should always feel:
|
||||
|
||||
* oriented
|
||||
* informed
|
||||
* in control
|
||||
* capable of intervention
|
||||
|
||||
⸻
|
||||
|
||||
2. Enhance Skill. Do Not Replace It.
|
||||
|
||||
Exoshell is intentionally designed for practitioners who want to preserve and deepen technical understanding rather than delegate it away.
|
||||
|
||||
The system should:
|
||||
|
||||
* teach
|
||||
* explain
|
||||
* preserve context
|
||||
* encourage operational literacy
|
||||
* surface better tools when appropriate
|
||||
|
||||
The system should not:
|
||||
|
||||
* encourage dependency
|
||||
* obscure systems
|
||||
* normalize blind patch acceptance
|
||||
* encourage unreviewed giant rewrites
|
||||
|
||||
Exoshell is anti-skill-atrophy software.
|
||||
|
||||
⸻
|
||||
|
||||
3. Prefer Existing UNIX Tools
|
||||
|
||||
Exoshell respects the shell ecosystem.
|
||||
|
||||
If awk, sed, jq, rg, fd, grep, git, make, or existing UNIX tooling is the correct solution, Exoshell should say so.
|
||||
|
||||
Example:
|
||||
|
||||
Signal high:
|
||||
awk is likely the correct tool here.
|
||||
Suggested:
|
||||
awk '{print $3}'
|
||||
|
||||
Exoshell should never force AI into workflows where deterministic tooling is superior.
|
||||
|
||||
⸻
|
||||
|
||||
4. Preserve Flow-State
|
||||
|
||||
Flow is sacred.
|
||||
|
||||
Exoshell exists to preserve:
|
||||
|
||||
* momentum
|
||||
* orientation
|
||||
* awareness
|
||||
* context
|
||||
* operational continuity
|
||||
|
||||
The system should feel:
|
||||
|
||||
* calm
|
||||
* responsive
|
||||
* intentional
|
||||
* instrument-like
|
||||
|
||||
Not:
|
||||
|
||||
* noisy
|
||||
* attention-seeking
|
||||
* chaotic
|
||||
* overbearing
|
||||
|
||||
⸻
|
||||
|
||||
5. Calm Software
|
||||
|
||||
Exoshell should feel like:
|
||||
|
||||
* a tuned workstation
|
||||
* a mech cockpit
|
||||
* a trusted operator console at 2am
|
||||
|
||||
Not:
|
||||
|
||||
* a startup dashboard
|
||||
* a productivity app
|
||||
* a social platform
|
||||
* a gamified assistant
|
||||
|
||||
The UI should be:
|
||||
|
||||
* restrained
|
||||
* high signal
|
||||
* information dense without clutter
|
||||
* aesthetically intentional
|
||||
|
||||
⸻
|
||||
|
||||
6. Visible Systems
|
||||
|
||||
Exoshell should expose:
|
||||
|
||||
* uncertainty
|
||||
* reasoning context
|
||||
* operational state
|
||||
* diffs
|
||||
* command execution
|
||||
* memory usage
|
||||
* signal quality
|
||||
|
||||
Users should never be forced to trust hidden machinery.
|
||||
|
||||
⸻
|
||||
|
||||
Non-Goals
|
||||
|
||||
Exoshell is explicitly NOT:
|
||||
|
||||
* a “vibe coding” platform
|
||||
* a beginner-first abstraction layer
|
||||
* an autonomous software engineer
|
||||
* a manager dashboard
|
||||
* a telemetry surveillance platform
|
||||
* a cloud lock-in product
|
||||
* an AI social platform
|
||||
* an attempt to replace the shell
|
||||
* a passive screen-watching assistant
|
||||
* a hidden-memory behavioral profiling system
|
||||
|
||||
Exoshell deliberately makes certain workflows harder:
|
||||
|
||||
* blind autonomous rewrites
|
||||
* opaque execution
|
||||
* no-review patching
|
||||
* hidden context accumulation
|
||||
* dependency-forming abstraction
|
||||
* cloud-dependent workflows
|
||||
* automation without understanding
|
||||
|
||||
⸻
|
||||
|
||||
Inspirations
|
||||
|
||||
Exoshell is directly inspired by:
|
||||
|
||||
GNU / UNIX Philosophy
|
||||
|
||||
* composability
|
||||
* inspectability
|
||||
* textual interfaces
|
||||
* user freedom
|
||||
* small understandable pieces
|
||||
|
||||
Emacs
|
||||
|
||||
* infinite hackability
|
||||
* modes
|
||||
* user ownership
|
||||
* software as living environment
|
||||
|
||||
Vim / Neovim
|
||||
|
||||
* speed
|
||||
* precision
|
||||
* modal interaction
|
||||
* mastery through repetition
|
||||
* config culture
|
||||
|
||||
Arch Linux
|
||||
|
||||
* explicit control
|
||||
* user responsibility
|
||||
* composability
|
||||
* “build your own machine”
|
||||
|
||||
Gentoo
|
||||
|
||||
* deep tuning
|
||||
* obsessive configurability
|
||||
* understanding through construction
|
||||
* practitioner culture
|
||||
|
||||
tmux / htop / lazygit / fish
|
||||
|
||||
* operational calm
|
||||
* cockpit UX
|
||||
* high information density
|
||||
* humane interaction
|
||||
|
||||
⸻
|
||||
|
||||
User Archetype
|
||||
|
||||
The canonical Exoshell user is:
|
||||
|
||||
* terminal-native
|
||||
* technically curious
|
||||
* workflow-oriented
|
||||
* skeptical of hidden automation
|
||||
* interested in improving over time
|
||||
* willing to tune their environment
|
||||
* interested in understanding systems rather than merely operating them
|
||||
|
||||
Examples:
|
||||
|
||||
* SREs
|
||||
* systems programmers
|
||||
* security engineers
|
||||
* infrastructure engineers
|
||||
* shell enthusiasts
|
||||
* local-first AI practitioners
|
||||
* people who think modern AI tooling is moving too fast toward opaque automation
|
||||
|
||||
⸻
|
||||
|
||||
Interaction Philosophy
|
||||
|
||||
Primary Model
|
||||
|
||||
Exoshell is shell-adjacent.
|
||||
|
||||
The shell remains primary.
|
||||
|
||||
Exoshell operates as:
|
||||
|
||||
* a cognitive overlay
|
||||
* operational instrumentation
|
||||
* contextual augmentation
|
||||
|
||||
The operator alternates fluidly between:
|
||||
|
||||
* direct shell interaction
|
||||
* Exoshell prompting
|
||||
* command review
|
||||
* contextual follow mode
|
||||
|
||||
The system should feel collaborative, not supervisory.
|
||||
|
||||
⸻
|
||||
|
||||
Core Interaction Loop
|
||||
|
||||
human explores system
|
||||
↓
|
||||
Exoshell observes context
|
||||
↓
|
||||
Exoshell augments awareness
|
||||
↓
|
||||
human requests action or insight
|
||||
↓
|
||||
Exoshell suggests command or interpretation
|
||||
↓
|
||||
human reviews/accepts/modifies
|
||||
↓
|
||||
Exoshell interprets results
|
||||
↓
|
||||
flow continues
|
||||
|
||||
⸻
|
||||
|
||||
Command Semantics
|
||||
|
||||
By default:
|
||||
|
||||
* Exoshell suggests commands
|
||||
* the user executes them
|
||||
* execution is explicit
|
||||
* destructive actions require confirmation
|
||||
|
||||
Actions may include:
|
||||
|
||||
* paste suggestion
|
||||
* paste + execute
|
||||
* explain command
|
||||
* return stdout/stderr to model
|
||||
* generate patch
|
||||
* review diff
|
||||
|
||||
⸻
|
||||
|
||||
Signal Strength
|
||||
|
||||
Exoshell surfaces uncertainty as “signal strength.”
|
||||
|
||||
Examples:
|
||||
|
||||
* signal: weak
|
||||
* signal: medium
|
||||
* signal: high
|
||||
|
||||
Low-confidence claims should be clearly surfaced.
|
||||
|
||||
The system should prefer:
|
||||
|
||||
* clarification
|
||||
* scoped suggestions
|
||||
* partial certainty
|
||||
|
||||
over hallucinated confidence.
|
||||
|
||||
⸻
|
||||
|
||||
Stances
|
||||
|
||||
Stances define operational behavior.
|
||||
|
||||
Examples:
|
||||
|
||||
* operator
|
||||
* audit
|
||||
* drift
|
||||
* teach
|
||||
* quiet
|
||||
* cockpit
|
||||
|
||||
Stances affect:
|
||||
|
||||
* verbosity
|
||||
* interruption frequency
|
||||
* skepticism
|
||||
* pacing
|
||||
* explanation depth
|
||||
* operational posture
|
||||
|
||||
Stances are NOT personalities.
|
||||
|
||||
⸻
|
||||
|
||||
Personalities
|
||||
|
||||
Personalities define aesthetic and expressive behavior.
|
||||
|
||||
Examples:
|
||||
|
||||
* minimalist
|
||||
* mech pilot
|
||||
* magical girl
|
||||
* sleepy night operator
|
||||
* UNIX gremlin
|
||||
|
||||
Personality affects:
|
||||
|
||||
* wording
|
||||
* cadence
|
||||
* flavor
|
||||
* atmosphere
|
||||
|
||||
Personality should never compromise:
|
||||
|
||||
* operational clarity
|
||||
* structured output
|
||||
* shell composability
|
||||
|
||||
⸻
|
||||
|
||||
Memory Philosophy
|
||||
|
||||
Memory is operational, not behavioral.
|
||||
|
||||
Exoshell should remember:
|
||||
|
||||
* repo structure
|
||||
* workflows
|
||||
* troubleshooting knowledge
|
||||
* active task context
|
||||
* useful operational discoveries
|
||||
|
||||
Memory should NOT silently accumulate:
|
||||
|
||||
* invasive behavioral profiling
|
||||
* emotional manipulation data
|
||||
* opaque long-term surveillance context
|
||||
|
||||
Memory should be:
|
||||
|
||||
* inspectable
|
||||
* scoped
|
||||
* editable
|
||||
* searchable
|
||||
* removable
|
||||
|
||||
Memory scopes may include:
|
||||
|
||||
* global
|
||||
* repo
|
||||
* task
|
||||
* session
|
||||
* ephemeral
|
||||
|
||||
⸻
|
||||
|
||||
Logging Philosophy
|
||||
|
||||
Logs exist for:
|
||||
|
||||
* transparency
|
||||
* operational continuity
|
||||
* searchable notes
|
||||
* runbook generation
|
||||
* learning
|
||||
* debugging
|
||||
|
||||
Logs should be:
|
||||
|
||||
* human-readable
|
||||
* text-based
|
||||
* compact by default
|
||||
* optionally verbose
|
||||
|
||||
The preferred format is markdown-oriented notebook logging.
|
||||
|
||||
Exoshell should preserve:
|
||||
|
||||
* discoveries
|
||||
* command outcomes
|
||||
* architectural observations
|
||||
* troubleshooting notes
|
||||
|
||||
Not raw “session replay.”
|
||||
|
||||
⸻
|
||||
|
||||
Local-First Philosophy
|
||||
|
||||
Exoshell is designed local-first.
|
||||
|
||||
Reasons:
|
||||
|
||||
* user sovereignty
|
||||
* reliability
|
||||
* privacy
|
||||
* hackability
|
||||
* reduced lock-in
|
||||
* stronger runtime design pressure
|
||||
|
||||
Cloud models are supported as optional backends, not architectural assumptions.
|
||||
|
||||
Designing for weaker local models encourages:
|
||||
|
||||
* better orchestration
|
||||
* better context handling
|
||||
* better uncertainty semantics
|
||||
* better UX
|
||||
|
||||
⸻
|
||||
|
||||
Visual Language
|
||||
|
||||
Exoshell should feel like:
|
||||
|
||||
* a mech cockpit
|
||||
* a terminal workstation
|
||||
* a tactical HUD
|
||||
* an operator console
|
||||
|
||||
The visual language should emphasize:
|
||||
|
||||
* restrained palettes
|
||||
* monochrome foundations
|
||||
* selective highlights
|
||||
* tasteful box drawing
|
||||
* dense but readable layouts
|
||||
* calm instrumentation
|
||||
|
||||
Not:
|
||||
|
||||
* dashboard clutter
|
||||
* excessive animation
|
||||
* startup aesthetics
|
||||
* “AI toy” visual language
|
||||
|
||||
⸻
|
||||
|
||||
Technical Direction (Initial)
|
||||
|
||||
Likely stack:
|
||||
|
||||
* Rust
|
||||
* Ratatui
|
||||
* Crossterm
|
||||
* Tokio
|
||||
* tree-sitter
|
||||
* PTY integration
|
||||
* markdown-based logging
|
||||
* local model adapters
|
||||
* OpenAI-compatible providers
|
||||
|
||||
The shell remains external in v1.
|
||||
|
||||
Exoshell lives beside the shell rather than replacing it.
|
||||
|
||||
⸻
|
||||
|
||||
Cultural Direction
|
||||
|
||||
Exoshell is practitioner software.
|
||||
|
||||
It should encourage:
|
||||
|
||||
* workflow craftsmanship
|
||||
* configuration culture
|
||||
* literacy
|
||||
* experimentation
|
||||
* user ownership
|
||||
* local-first values
|
||||
* composability
|
||||
* sharing tuned environments
|
||||
|
||||
The project should resist:
|
||||
|
||||
* enshittification
|
||||
* surveillance incentives
|
||||
* cloud dependence
|
||||
* manager-oriented analytics
|
||||
* skill erosion
|
||||
|
||||
Exoshell should feel:
|
||||
|
||||
* configurable like Emacs
|
||||
* precise like Vim
|
||||
* intentional like Arch
|
||||
* obsessively tunable like Gentoo
|
||||
|
||||
⸻
|
||||
|
||||
Sacred Rule
|
||||
|
||||
Enhance skill. Do not replace it.
|
||||
|
||||
Everything in Exoshell should reinforce this principle.
|
||||
Loading…
Reference in New Issue
Block a user