8000 GitHub - rehanzo/tenere: 🔥 TUI interface for LLMs written in Rust
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

rehanzo/tenere

 
 

Repository files navigation

Tenere

A crab in the moroccan desert

TUI interface for LLMs written in Rust

📸 Demo

Demo


🪄 Featues

  • Syntax highlights
  • Chat history
  • Save chats to files
  • Vim keybinding (most common ops)
  • Copy text from/to clipboard (works only on the prompt)
  • Multiple backends

💎 Supported LLMs

  • ChatGPT
  • llama.cpp
  • ollama

🚀 Installation

📥 Binary releases

You can download the pre-built binaries from the release page

📦 crates.io

tenere can be installed from crates.io

cargo install tenere

⚒️ Build from source

To build from the source, you need Rust compiler and Cargo package manager.

Once Rust and Cargo are installed, run the following command to build:

cargo build --release

This will produce an executable file at target/release/tenere that you can copy to a directory in your $PATH.

🍺Brew

On macOS, you can use brew:

brew tap pythops/tenere
brew install tenere

⚙️ Configuration

Tenere can be configured using a TOML configuration file. The file should be located in :

  • Linux : $HOME/.config/tenere/config.toml or $XDG_CONFIG_HOME/tenere/config.toml
  • Mac : $HOME/Library/Application Support/tenere/config.toml

General settings

Here are the available general settings:

  • archive_file_name: the file name where the chat will be saved. By default it is set to tenere.archive
  • llm: the llm model name. Possible values are:
    • chatgpt
    • llamacpp
    • ollama
archive_file_name = "tenere.archive"
llm  = "chatgpt"

Key bindings

Tenere supports customizable key bindings. You can modify some of the default key bindings by updating the [key_bindings] section in the configuration file. Here is an example with the default key bindings

[key_bindings]
show_help = '?'
show_history = 'h'
new_chat = 'n'
save_chat = 's'

ℹ️ Note

To avoid overlapping with vim key bindings, you need to use ctrl + key except for help ?.

Chatgpt

To use chatgpt as the backend, you'll need to provide an API key for OpenAI. There are two ways to do this:

Set an environment variable with your API key:

export OPENAI_API_KEY="YOUTR KEY HERE"

Or

Include your API key in the configuration file:

[chatgpt]
openai_api_key = "Your API key here"
model = "gpt-3.5-turbo"
url = "https://api.openai.com/v1/chat/completions"

The default model is set to gpt-3.5-turbo. Check out the OpenAI documentation for more info.

llama.cpp

To use llama.cpp as the backend, you'll need to provide the url that points to the server :

[llamacpp]
url = "http://localhost:8080/v1/chat/completions"

If you configure the server with an api key, then you need to provide it as well:

Setting an environment variable :

export LLAMACPP_API_KEY="YOUTR KEY HERE"

Or

Include your API key in the configuration file:

[llamacpp]
url = "http://localhost:8080/v1/chat/completions"
api_key = "Your API Key here"

More infos about llama.cpp api here

Ollama

To use ollam 8029 a as the backend, you'll need to provide the url that points to the server with the model name :

[ollama]
url = "http://localhost:11434/api/chat"
model = "Your model name here"

More infos about ollama api here


⌨️ Key bindings

Global

These are the default key bindings regardless of the focused block.

ctrl + n: Start a new chat and save the previous one in history.

ctrl + s: Save the current chat or chat history (history pop-up should be visible first) to tenere.archive file in the current directory.

Tab: Switch the focus.

j or Down arrow key: Scroll down

k or Up arrow key: Scroll up

ctrl + h : Show chat history. Press Esc to dismiss it.

ctrl + t : Stop the stream response

q or ctrl + c: Quit the app

?: Show the help pop-up. Press Esc to dismiss it

Prompt

There are 3 modes like vim: Normal, Visual and Insert.

Insert mode

Esc: to switch back to Normal mode.

Enter: to create a new line.

Backspace: to remove the previous character.

Normal mode

Enter: to submit the prompt


h or Left: Move the cursor backward by one char.

j or Down: Move the cursor down.

k or Up: Move the cursor up.

l or Right: Move the cursor forward by one char.

w: Move the cursor right by one word.

b: Move the cursor backward by one word.

0: Move the cursor to the start of the line.

$: Move the cursor to the end of the line.

G: Go to the end.

gg: Go to the top.


a: Insert after the cursor.

A: Insert at the end of the line.

i: Insert before the cursor.

I: Insert at the beginning of the line.

o: Append a new line below the current line.

O: Append a new line above the current line.


x: Delete one char under to the cursor.

dd: Cut the current line

D: Delete the current line and

dw: Delete the word next to the cursor.

db: Delete the word on the left of the cursor.

d0: Delete from the cursor to the beginning of the line.

d$: Delete from the cursor to the end of the line.


C: Change to the end of the line.

cc: Change the current line.

c0: Change from the cursor to the beginning of the line.

c$: Change from the cursor to the end of the line.

cw: Change the next word.

cb: Change the word on the left of the cursor.


u: Undo

p: Paste

Visual mode

v: Switch to visual.

y: Yank the selected text


⚖️ License

GPLv3

About

🔥 TUI interface for LLMs written in Rust

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 99.2%
  • Just 0.8%
0