The challenge:
Design and implement a modern, beautiful TUI for yoyo that becomes the primary interactive experience for using the agent in the terminal.
This should not just be a basic text wrapper around the current REPL. It should be treated as a product-level interface with thoughtful UX, strong keyboard navigation, good layout behaviour, visual polish, and room for future expansion.
As part of this challenge, yoyo should first perform research into:
-
Rust TUI library options
- Investigate the main libraries and supporting crates that could be used to build a polished TUI
- Compare tradeoffs such as ecosystem maturity, rendering model, cross-platform support, input handling, performance, layout flexibility, theming, accessibility, testing, and maintainability
- A likely starting point is the Ratatui + Crossterm ecosystem, since Ratatui is a Rust library for rich terminal UIs and Crossterm provides cross-platform terminal manipulation/input support.
-
Competitive research / inspiration
- Study the UX of modern AI-agent terminal tools and identify patterns worth borrowing
- Claude Code should be treated as the benchmark to look up to for overall AI-agent terminal UX, especially around interactive mode and slash-command workflows. Claude Code documents an interactive CLI with built-in commands and slash-command support.
- Gemini CLI is also relevant inspiration because it exposes a rich command-driven terminal experience, including built-in slash commands and theme support.
- OpenCode is relevant as an example of an explicit AI-agent TUI, with theming and an interactive terminal interface documented as a first-class experience.
- Aider is also worth reviewing for command UX and terminal workflow patterns, even though its interface model is somewhat different.
Product intent
The goal is to make yoyo feel like a serious modern coding-agent application in the terminal, not just a line-oriented CLI.
The TUI should aim for a user experience that feels:
- fast
- clean
- keyboard-first
- discoverable
- visually polished
- useful for long-running agent sessions
Core UX goals
The TUI should aim to support a substantial subset of the following:
Suggested feature scope for an initial version
A good v1 target could include:
- full-screen alternate-screen TUI
- chat/session panel
- input composer with multiline support
- slash-command picker/autocomplete
- status/footer bar
- streaming assistant responses
- streaming tool execution updates
- keyboard navigation between key regions
- help overlay with shortcuts
- at least basic theming support
- graceful resize handling
- fallback path to current non-TUI mode if needed
Non-goals for v1
To keep the first version achievable, it may be reasonable to defer:
- mouse-first workflows
- overly complex window management
- plugin marketplace UI
- heavy animation
- advanced accessibility tooling beyond good keyboard support and sensible contrast
- full persistence browser / multi-session dashboard if that would slow initial delivery too much
Deliverables
The outcome of this challenge should include:
-
Research summary
- TUI library comparison
- competitor inspiration summary
- rationale for the chosen implementation approach
-
Mini design spec
- proposed screen layout
- key interactions
- keyboard shortcuts
- state model / view model at a high level
-
Implementation
- first working TUI integrated into yoyo
- documentation for how to launch and use it
-
Follow-up plan
- list of future enhancements after v1 lands
Suggested acceptance criteria
A strong implementation would satisfy most or all of the following:
- launching yoyo can open a polished full-screen TUI
- the UI is clearly more capable and more discoverable than a plain REPL
- slash commands are easy to discover and insert
- agent responses and tool activity stream clearly in the interface
- the layout remains usable across common terminal sizes
- keyboard navigation feels intentional and reliable
- the design is visually appealing enough that users would reasonably compare it to modern AI-agent terminal tools
- the code structure leaves room for future additions such as panes, dialogs, palettes, themes, and session management
Implementation guidance
The agent should not jump straight into coding without research. It should first:
- inspect the current yoyo terminal architecture
- evaluate whether the TUI should replace or wrap the current REPL
- choose an appropriate Rust TUI stack
- define a pragmatic v1 scope
- then implement incrementally
Where possible, the implementation should favour:
- clean separation of rendering, input handling, and app state
- testable components
- cross-platform terminal compatibility
- low maintenance burden
How to verify success:
Success can be verified in four stages:
-
Research quality
- the issue/PR includes a grounded comparison of Rust TUI options and relevant competitor UX patterns
-
Functional verification
- yoyo launches into a working TUI
- users can type prompts, navigate, use slash commands, and observe streaming output/tool activity
-
UX verification
- the TUI feels meaningfully more modern, discoverable, and polished than a plain terminal prompt
- keyboard navigation and layout behaviour feel deliberate rather than hacked together
-
Code/design verification
- the implementation is structured in a way that makes future TUI enhancements realistic
A successful result should feel like the beginning of a first-class terminal product experience, not just a cosmetic wrapper.
Expected difficulty:
Hard
The challenge:
Design and implement a modern, beautiful TUI for
yoyothat becomes the primary interactive experience for using the agent in the terminal.This should not just be a basic text wrapper around the current REPL. It should be treated as a product-level interface with thoughtful UX, strong keyboard navigation, good layout behaviour, visual polish, and room for future expansion.
As part of this challenge, yoyo should first perform research into:
Rust TUI library options
Competitive research / inspiration
Product intent
The goal is to make yoyo feel like a serious modern coding-agent application in the terminal, not just a line-oriented CLI.
The TUI should aim for a user experience that feels:
Core UX goals
The TUI should aim to support a substantial subset of the following:
Main session view
Rich input experience
Session/status visibility
Tool execution UX
Navigation and discoverability
Visual polish
Suggested feature scope for an initial version
A good v1 target could include:
Non-goals for v1
To keep the first version achievable, it may be reasonable to defer:
Deliverables
The outcome of this challenge should include:
Research summary
Mini design spec
Implementation
Follow-up plan
Suggested acceptance criteria
A strong implementation would satisfy most or all of the following:
Implementation guidance
The agent should not jump straight into coding without research. It should first:
Where possible, the implementation should favour:
How to verify success:
Success can be verified in four stages:
Research quality
Functional verification
UX verification
Code/design verification
A successful result should feel like the beginning of a first-class terminal product experience, not just a cosmetic wrapper.
Expected difficulty:
Hard