aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authorterminaldweller <devi@terminaldweller.com>2024-05-13 16:30:11 +0000
committerterminaldweller <devi@terminaldweller.com>2024-05-13 16:30:11 +0000
commit7b6605142343a622a982ca36da5ee6fbd1cd9a19 (patch)
tree5cbb6026f9e4d87f4fbac5f7db7da14ffb575a52 /README.md
parentadded a config file for golangci-lint (diff)
downloadmilla-7b6605142343a622a982ca36da5ee6fbd1cd9a19.tar.gz
milla-7b6605142343a622a982ca36da5ee6fbd1cd9a19.zip
updated the readme, added example config file
Diffstat (limited to 'README.md')
-rw-r--r--README.md220
1 files changed, 188 insertions, 32 deletions
diff --git a/README.md b/README.md
index e4cf757..222468a 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
# milla
-Milla is an IRC bot that sends things over to an LLM when you ask it questions, prints the answer with syntax-hilighting.<br/>
-Currently Supported Models:
+Milla is an IRC bot that sends things over to an LLM when you ask it questions and prints the answer with optional syntax-hilighting.<br/>
+Currently Supported:
- Ollama
- Openai
@@ -9,38 +9,185 @@ Currently Supported Models:
![milla](./milla.png)
-### Config
-
-config:
-
-```toml
-ircServer = "irc.terminaldweller.com"
-ircPort = 6697
-ircNick = "mybot"
-ircSaslUser = "mybot"
-ircSaslPass = "mypass"
-ircChannels = ["#mychannel1", "#mychannel2"]
-ollamaEndpoint = ""
-temp = 0.2
-ollamaSystem = ""
-requestTimeout = 10
-millaReconnectDelay = 60
-enableSasl = true
-model = "llama2-uncensored"
-chromaStyle = "rose-pine-moon"
-chromaFormatter = "terminal256"
-provider = "ollama" # ollama, chatgpt, gemini
-apikey = "key"
-topP = 0.9
-topK = 20
+milla accepts one cli arg which tells it where to look for the config file:<br/>
+
+```$ milla -help
+Usage of ./milla:
+ -config string
+ path to the config file (default "./config.toml")
+```
+
+## Config
+
+An exhaustive example is in `config-example.toml`.
+
+#### ircServer
+
+The address for the IRC server to connect to.
+
+#### ircNick
+
+The nick the bot should use.
+
+#### enableSasl
+
+Whether to use SASL for authentication.
+
+#### ircSaslUser
+
+The SASL username.
+
+#### ircSaslPass
+
+The SASL password for SASL plain authentication.
+
+#### ollamaEndpoint
+
+The address for the Ollama chat endpoint.
+
+#### model
+
+The name of the model to use.
+
+#### chromaStyle
+
+The style to use for syntax highlighting done by [chroma](https://github.com/alecthomas/chroma). This is basically what's called a "theme".
+
+#### chromaFormatter
+
+The formatter to use. This tells chroma how to generate the color in the output. The supported options are:
+
+- `noop` for no syntax highlighting
+- `terminal` for 8-color terminals
+- `terminal8` for 8-color terminals
+- `terminal16` for 16-color terminals
+- `terminal256` for 256-color terminals
+- `terminal16m` for treucolor terminals
+- `html` for HTML output
+
+#### provider
+
+Which LLM provider to use. The supported options are:
+
+- [ollama](https://github.com/ollama/ollama)
+- chatgpt
+- gemini
+
+#### apikey
+
+The apikey to use for the LLM provider.
+
+#### ollamaSystem
+
+The system message to use for ollama.
+
+#### clientCertPath
+
+The path to the client certificate to use for SASL external authentication.
+
+#### serverPass
+
+The password to use for the IRC server the bot is trying to connect to if the server has a password.
+
+#### bind
+
+Which address to bind to for the IRC server.
+
+#### temp
+
+The temperature to config the model with.
+
+#### requestTimeout
+
+The timeout for requests made to the LLM provider.
+
+#### millaReconnectDelay
+
+How much to wait before reconnecting to the IRC server.
+
+#### ircPort
+
+Which port to connect to for the IRC server.
+
+#### keepAlive
+
+#### memoryLimit
+
+How many conversations to keep in memory for a model.
+
+#### pingDelay
+
+Ping delay for the IRC server.
+
+#### pingTimeout
+
+Ping timeout for the IRC server.
+
+#### topP
+
+#### topK
+
+#### skipTLSVerify
+
+Skip verifying the IRC server's TLS certificate. This only makes sense if you are trying to connect to an IRC server with a self-signed certificate.
+
+#### useTLS
+
+Whether to use TLS to connect to the IRC server. This option is provided to support usage on overlay networks such as Tor, i2p and [yggdrassil](https://github.com/yggdrasil-network/yggdrasil-go).
+
+#### disableSTSFallback
+
+#### allowFlood
+
+Disable [girc](https://github.com/lrstanley/girc)'s built-in flood protection.
+
+#### debug
+
+Whether to enable debug logging. The logs are written to stdout.
+
+#### out
+
+Whether to write raw messages to stdout.
+
+#### admins
+
+List of adimns for the bot. Only admins can use commands.
+
+```
+admins = ["admin1", "admin2"]
```
-### Deploy
+#### ircChannels
+
+List of channels for the bot to join when it connects to the server.
+
+```
+ircChannels = ["#channel1", "#channel2"]
+```
+
+## Commands
+
+#### help
+
+Prints the help message.
+
+#### get
-You can use the provided compose file:<br/>
+Get the value of a config option. Use the same name as the config file but capitalized.
+
+#### getall
+
+Get the value of all config options.
+
+#### set
+
+Set a config option on the fly. Use the same name as the config file but capitalized.
+
+## Deploy
+
+An example docker compose file is provided in the repo under `docker-compose.yaml`.
```yaml
-version: "3.9"
services:
milla:
image: milla
@@ -50,6 +197,7 @@ services:
resources:
limits:
memory: 64M
+ user: ${UID}:${GID}
logging:
driver: "json-file"
options:
@@ -60,13 +208,21 @@ services:
command: ["--config", "/opt/milla/config.toml"]
volumes:
- ./config.toml:/opt/milla/config.toml
+ - /etc/ssl/certs:/etc/ssl/certs:ro
cap_drop:
- ALL
- dns:
- - 9.9.9.9
environment:
- SERVER_DEPLOYMENT_TYPE=deployment
- entrypoint: ["/milla/milla"]
networks:
millanet:
```
+
+## Thanks
+
+- [girc](https://github.com/lrstanley/girc)
+- [chroma](https://github.com/alecthomas/chroma)
+- [ollama](https://github.com/ollama/ollama)
+
+## Similar Projects
+
+- [soulshack](https://github.com/pkdindustries/soulshack)