Language Model Terminal Interface.
Project description
Language Model Terminal Interface
Oftentimes I just want to talk to LMs, without the agentic clutter: I dont want it to read my stuff, access my files or consume through a gazillion tokens of tools, skills, MCPs and what not. I just want a recipe for tika masala, c'mon :(
For that I normally have to log into the webapps from the provider (i.e. Mistral LeChat, Gemini, ChatGPT). But I live on the terminal. So I made a thin wrapper bc it is 2026 and programming is easy
FAQ:
- Can I talk with LMs from different providers from the terminal? Yes :)
- Does the app have access to my files? No
- Can the app run terminal commands? Nope
- Can the app execute code? Nein
- Does the app have any sort of agentic loop? Negative
- Can I connect the app to MCPs or other tools? Also no
Install
uv tool install lmti
Usage
# Start with the default model
lmti
# Start with a specific model
lmti -m vertex:gemini-2.5-flash
Configuration
Config is stored at ~/.config/lmti/config.yaml. It handles your credentials and default settings:
credentials:
MISTRAL_API_KEY: your-key-here
settings:
render_markdown: true
model: mistral:mistral-small-2603
models:
- mistral:mistral-small-2603
- vertex:gemini-2.5-flash
Development
Structure
src/lmti/
├── cli.py # Argument parsing and entry point
├── config.py # Configuration loading and persistence
├── tui.py # Terminal UI implementation (prompt-toolkit)
└── __init__.py
Tooling
We use just for development tasks. Use:
just sync: Updates lockfile and syncs environment.just format: Lints and formats withruff.just check-types: Static analysis withty.just analyze-complexity: Cyclomatic complexity checks withcomplexipy.just test: Runs pytest with 90% coverage threshold.
Contribute
- Hooks: Install pre-commit hooks via
just install-hooks. - Issues: Open an issue first using the default template.
- PRs: Link your PR to the relevant issue.
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lmti-1.1.0.tar.gz.
File metadata
- Download URL: lmti-1.1.0.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18a356a8829cd8b18fb7b3761e3e5cac7d23d93588ff4f8dfae5ddff7f64f1d2
|
|
| MD5 |
eb1aaaa91c65d535bfe30c369e95a0a7
|
|
| BLAKE2b-256 |
b4383f42e7a67299a3decdf0d82e54be983d984835e8b68b2a5188864a206a61
|
File details
Details for the file lmti-1.1.0-py3-none-any.whl.
File metadata
- Download URL: lmti-1.1.0-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af30b3683f853e4b112c12b4e8b292b6d3b95a0816e1dd0d5fde490926d6719e
|
|
| MD5 |
2ff3a76de23ae3639be055a63fcad9cd
|
|
| BLAKE2b-256 |
de7377f1584638c06311910dfa123f7cacc67f25677f9c155595cc49d9289870
|