378dceb3f4dbb19554e568489d9773c00af4e114
gf-lt (grail finder's llm tui)
terminal user interface for large language models. made with use of tview
has/supports
- character card spec;
- llama.cpp api, deepseek, openrouter (other ones were not tested);
- showing images (not really, for now only if your char card is png it could show it);
- tts/stt (if whisper.cpp server / fastapi tts server are provided);
- image input;
does not have/support
- RAG; (RAG was implemented, but I found it unusable and then sql extention broke, so no RAG);
- MCP; (agentic is implemented, but as a raw and predefined functions for llm to use. see tools.go);
usage examples
how to install
(requires golang) clone the project
cd gf-lt
make
keybindings
while running you can press f12 for list of keys;
Esc: send msg
PgUp/Down: switch focus between input and chat widgets
F1: manage chats
F2: regen last
F3: delete last msg
F4: edit msg
F5: toggle system
F6: interrupt bot resp
F7: copy last msg to clipboard (linux xclip)
F8: copy n msg to clipboard (linux xclip)
F9: table to copy from; with all code blocks
F10: switch if LLM will respond on this message (for user to write multiple messages in a row)
F11: import chat file
F12: show this help page
Ctrl+w: resume generation on the last msg
Ctrl+s: load new char/agent
Ctrl+e: export chat to json file
Ctrl+c: close programm
Ctrl+n: start a new chat
Ctrl+o: open file picker for img input
Ctrl+p: props edit form (min-p, dry, etc.)
Ctrl+v: switch between /completion and /chat api (if provided in config)
Ctrl+r: start/stop recording from your microphone (needs stt server)
Ctrl+t: remove thinking (<think>) and tool messages from context (delete from chat)
Ctrl+l: update connected model name (llamacpp)
Ctrl+k: switch tool use (recommend tool use to llm after user msg)
Ctrl+j: if chat agent is char.png will show the image; then any key to return
Ctrl+a: interrupt tts (needs tts server)
Ctrl+q: cycle through mentioned chars in chat, to pick persona to send next msg as
Ctrl+x: cycle through mentioned chars in chat, to pick persona to send next msg as (for llm)
setting up config
cp config.example.toml config.toml
set values as you need them to be.
setting up STT/TTS services
For speech-to-text (STT) and text-to-speech (TTS) functionality:
- The project uses Whisper.cpp for STT and Kokoro for TTS
- Docker Compose automatically downloads the required Whisper model on first run
- To start all services:
make docker-up - To start only STT service:
make docker-up-whisper - To start only TTS service:
make docker-up-kokoro - To stop all services:
make docker-down - To stop only STT service:
make docker-down-whisper - To stop only TTS service:
make docker-down-kokoro - To view all service logs:
make docker-logs - To view only STT service logs:
make docker-logs-whisper - To view only TTS service logs:
make docker-logs-kokoro - The STT service runs on http://localhost:8081
- The TTS service runs on http://localhost:8880
Description
Languages
Go
99%
Makefile
1%
