Choose an Agent surface
Use the TUI, headless CLI, Web surface, or chat channels without creating a second composition authority.
Surfaces own how a person or system exchanges Turns with the Agent. Product behavior still comes from the Host-selected Plugin inventory.
| Surface | Best for | Interaction boundary |
|---|---|---|
| TUI | Interactive local work | Supports reviewed commands, Skills, and bounded ask_user questions. |
| Headless CLI | One-shot automation and tests | Returns immediately when interactive input is unavailable. |
| Web | Embedding the Agent in another product | The embedding Host owns authorization and selected Plugins. |
| Channel | Telegram or Discord entry points | Uses explicit chat/channel allowlists and environment-held tokens. |
TUI and headless
cargo run -p lenso-agent-tui
cargo run -p lenso-agent-cli -- "Summarize this workspace README."
The TUI can pause a Turn for bounded questions. Headless and channel surfaces do not pretend to be interactive unless the embedding surface supplies a User Interaction Adapter.
Standalone Web surface
LENSO_AGENT_CONTROL_TOKEN=replace-with-a-local-control-token \
cargo run -p lenso-agent-web -- \
--listen 127.0.0.1:8788 \
--tool-policy ~/.lenso/agent/console-agent-tool-policy.json
The control route accepts the matching bearer token. Tool policy updates are revisioned, validated against the active Plan-bound catalog, persisted before activation, and affect only later admitted Turns.
Chat channels
The channel distribution supports reviewed Telegram and Discord configuration. Installing the CLI does not install every surface; each executable links only the surface Plugin inventory it needs.
Choose a surface after the user workflow is clear. Adding a Web shell or chat transport does not create another composition authority or move Plugin selection out of the Host.