Skip to content

Repository files navigation

ECAssistant.TUI

The terminal UI layer of ECAssistant. Streaming chat, session tabs, tool-call rendering, and setup wizards — a reusable library for building assist-first AI experiences in a plain terminal. macOS, Linux, Windows.

NuGet License: MIT

ECAssistant exists to assist people — and the TUI is how that assistance looks and feels: every token streamed live, every tool call rendered inline with its approval and result, nothing hidden behind a spinner. If you're building your own host on ECAssistantCore, this library gives you that experience for free.

Part of ECAssistant — your models, your keys, your machine. MIT.

Features

  • Streaming chat rendering — token-by-token output with thinking/reasoning blocks
  • Session tabs — multiple concurrent conversations, independent scrollback
  • Tool-call visualization — tool invocations, approvals, and results rendered inline
  • Setup wizards — first-run model install and provider configuration flows
  • Cross-platform — raw ANSI/VT handling; no mouse sequences, terminal-native scrolling
  • Async-safe — all rendering marshaled to the UI thread; no deadlocks on streaming

What makes it different

  • Interactive decision checkpoints — the agent surfaces genuine ambiguity as a real numbered choice in your terminal (Enter = autonomous fallback); permission prompts and approvals render the same way — you're never guessing what it wants
  • Everything visible, inline — streamed tokens, thinking blocks, tool invocations, approvals, and results all render in place; nothing hides behind a spinner
  • Cross-thread-safe by construction — all rendering marshaled to the UI thread (the freeze-bug class common to terminal UIs is designed out)
  • A library, not a framework — bring your own host around ECAssistantCore; no hidden coupling to any specific wiring

Install

Public on nuget.org — no token, no auth:

dotnet add package ECAssistant.TUI

What you get

Capability What it means for your host
Streaming chat rendering Token-by-token output with thinking/reasoning blocks — never a frozen spinner
Session tabs Multiple concurrent conversations, independent scrollback, dirty indicators, scrollable tab strip
Tool-call visualization Invocations, approval prompts (approve / always / never), and results rendered inline in place
Decision checkpoints Genuine ambiguity becomes a numbered choice in the terminal (Enter = autonomous fallback)
Setup wizards First-run model install + provider configuration flows, ready to reuse
Undo/redo Editor integration via AvaloniaEdit-style Document.UndoStack patterns (Ctrl+Z / Ctrl+Y)
Cross-platform ANSI Raw ANSI/VT handling; no mouse sequences; terminal-native scrolling; macOS, Linux, Windows

Non-negotiables (why it's solid)

  • All rendering marshaled to the UI thread — the cross-thread freeze bug class is designed out, not tested away.
  • A library, not a framework — bring your own host around ECAssistantCore; no hidden coupling to any wiring.

See it in action

ECAssistantConsole is the reference host built on this library — run it and you're looking at the TUI doing its thing.

The ecosystem

Repo What it is
ECAssistant Start here — overview & docs
ECAssistantCore The embeddable agent library
ECAssistantLLM OpenAI-compatible local LLM server
ECAssistantConsole Reference host / end-user CLI

License

MIT — © 2026 SideDevEC

About

Agentic AI Harness TUI library for Local LLM

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages