Terminal UI (TUI)
Soliplex ships a terminal client built with Textual for interacting with rooms from the command line -- a quick way to exercise a running backend without the Flutter client. Two entry points are provided:
soliplex-tui-- the interactive terminal client.soliplex-tui-serve-- serves that same client as a web application (over textual-serve) so it can be reached from a browser.
Installation
The TUI's dependencies live in the tui dependency group (Textual,
textual-serve, textual-fspicker, and Typer):
Running the client
By default the client connects to a backend at http://127.0.0.1:8000. Point
it at a different server with --url:
Options:
--url URL-- base URL of the Soliplex backend (default:http://127.0.0.1:8000)-v/--verbose-- enable verbose output-V/--version-- print the version and exit-h/--help-- show help and exit
Authentication
On startup the TUI asks the backend which OIDC providers are configured
(GET /api/login):
- If the backend defines one or more providers, the TUI prompts you to pick one and enter your username and password, then uses the resulting token for all subsequent requests.
- If the backend exposes no providers -- for example, it was started with
--no-auth-mode(see Server Setup) -- the TUI skips the login step and goes straight to the room list.
Using the client
After authentication (if any), the TUI opens the room list; select a room to
open its chat view. The TUI is a thin client over the same /api/v1
endpoints the Flutter client uses, so the actions available mirror the REST
API. Most are reachable from the footer key bindings.
Global:
ctrl+n-- view the installation configurationctrl+q-- quitctrl+\-- open the command palette
In a room:
ctrl+n-- start a new threadctrl+t-- list the room's threadsctrl+r-- list runsctrl+s-- view the current AG-UI statectrl+z-- edit thread metadatactrl+p-- request an MCP token for the roomshift+ctrl+u-- upload a fileesc-- go back
Viewing a run:
ctrl+f-- submit feedback on the runctrl+z-- edit run metadata
Serving the TUI over the web
soliplex-tui-serve wraps the client with
textual-serve, running it as a
web application you can open in a browser -- handy for demos, or for users who
cannot install the client locally:
This serves at http://127.0.0.1:8002 by default and connects to a backend at http://127.0.0.1:8000. Options:
--backend-url URL-- base URL of the Soliplex backend (default:http://127.0.0.1:8000)--host HOST-- interface to bind (default:127.0.0.1)--port PORT-- port to listen on (default:8002)--public-url URL-- publicly reachable URL of the served app (defaults tohttp://{host}:{port})
For example, to serve on all interfaces behind a known public URL: