A text-based terminal client for Ollama.
Project description
oterm
the text-based terminal client for Ollama.
Features
- intuitive and simple terminal UI, no need to run servers, frontends, just type
oterm
in your terminal. - multiple persistent chat sessions, stored together with the context embeddings and system prompt customizations in sqlite.
- can use any of the models you have pulled in Ollama, or your own custom models.
- allows for easy customization of the model's system prompt and parameters.
Installation
Using brew
for MacOS:
brew tap ggozad/formulas
brew install ggozad/formulas/oterm
Using pip
:
pip install oterm
Using
In order to use oterm
you will need to have the Ollama server running. By default it expects to find the Ollama API running on http://0.0.0.0:11434
. If you are running Ollama inside docker or on a different host/port, use the OLLAMA_HOST
environment variable to customize the host/port. Alternatively you can use OLLAMA_URL
to specify the full http(s) url. Setting OTERM_VERIFY_SSL
to False
will disable SSL verification.
OLLAMA_URL=http://host:port/api
The following keyboard shortcuts are supported:
-
^ Ctrl+N - create a new chat session
-
^ Ctrl+E - edit the chat session (change template, system prompt or format)
-
^ Ctrl+R - rename the current chat session
-
^ Ctrl+S - export the current chat session as markdown
-
^ Ctrl+X - delete the current chat session
-
^ Ctrl+T - toggle between dark/light theme
-
^ Ctrl+Q - quit
-
^ Ctrl+L - switch to multiline input mode
-
^ Ctrl+P - select an image to include with the next message
-
↑ - navigate through history of previous prompts
In multiline mode, you can press Enter to send the message, or Shift+Enter to add a new line at the cursor.
While Ollama is inferring the next message, you can press Esc to cancel the inference.
Note that some of the shortcuts may not work in a certain context, for example pressing ↑ while the prompt is in multi-line mode.
Copy / Paste
It is difficult to properly support copy/paste in terminal applications. You can copy blocks to your clipboard as such:
- clicking a message will copy it to the clipboard.
- clicking a code block will only copy the code block to the clipboard.
For most terminals there exists a key modifier you can use to click and drag to manually select text. For example:
iTerm
Option key.Gnome Terminal
Shift key.Windows Terminal
Shift key.
Customizing models
When creating a new chat, you may not only select the model, but also customize the template
as well as the system
instruction to pass to the model. Checking the JSON output
checkbox will cause the model reply in JSON format. Please note that oterm
will not (yet) pull models for you, use ollama
to do that. All the models you have pulled or created will be available to oterm
.
You can also "edit" the chat to change the template, system prompt or format. Note, that the model cannot be changed once the chat has started. In addition whatever "context" the chat had (an embedding of the previous messages) will be kept.
Chat session storage
All your chat sessions are stored locally in a sqlite database. You can customize the directory where the database is stored by setting the OTERM_DATA_DIR
environment variable.
You can find the location of the database by running oterm --db
.
Screenshots
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file oterm-0.2.10.tar.gz
.
File metadata
- Download URL: oterm-0.2.10.tar.gz
- Upload date:
- Size: 20.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.10.14 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4157293bfd238eac3bcd01ed6ad006a8bda37df8278db0f2f83008919d3835f |
|
MD5 | b5eff3ece69c6a4e6301ebacf78e754d |
|
BLAKE2b-256 | b01eda0b648bf69b3a2935a9786b4438886965866474b9219be876e8eca92036 |
File details
Details for the file oterm-0.2.10-py3-none-any.whl
.
File metadata
- Download URL: oterm-0.2.10-py3-none-any.whl
- Upload date:
- Size: 27.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.10.14 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b445235860aaf8d0c7ce309485768978df522a71cb63796ddbfe27688646096a |
|
MD5 | e80954cc8504a31d6eb0380eb5ee3d20 |
|
BLAKE2b-256 | 49ec9b269bdbc9d78a066deb3ae62ec2acbf7cfded7baa5cf34f82bab8d159ef |