It would be funny if servers could talk.
Go to file
Cyberes af8f1dbd5c clean up 2024-03-07 18:59:48 -07:00
pers simplfy web_reader tool description 2024-03-07 18:54:13 -07:00
.gitignore clean up 2024-03-07 18:59:48 -07:00
LICENSE Initial commit 2024-01-20 13:12:58 -07:00 move to langchain 2024-02-02 23:31:20 -07:00
character.yml move to langchain 2024-02-02 23:31:20 -07:00
config.yml.sample add player location 2024-02-02 23:50:51 -07:00 move to langchain 2024-02-02 23:31:20 -07:00
requirements.txt fix undetected-chromedriver issue, bump up read_webpage character limit, adjust tool descriptions 2024-03-07 18:49:41 -07:00 use chromadb instead of faiss 2024-02-04 20:56:32 -07:00


It would be funny if computers could talk.

This is a project to personify computer systems and give them a voice. OpenAI is used to create an agent you can converse with and use for server management.


  1. Install Redis:

    sudo apt install -y redis && sudo systemctl enable --now redis-server

  2. Install dependencies:

    pip install -r requirements.txt

  3. Install the Chrome browser so the agent can use it in headless mode.

  4. Copy the config file:

    cp config.yml.sample config.yml

  5. Edit the config and fill in openai_key (required).

  6. Start the program with ./

You can symlink ./ to your ~/bin or whatever to easily start the program.

To Do

  • Cache per-hostname conversation history in a database. Store message timestamps as well. Summarize conversations.
  • Feed the conversation history to the AI and make sure to give it relative dates of the conversations as well.
  • Log all commands and their outputs to the database.
  • Implement context cutoff based on token counts
  • Option to have the bot send the user a welcome message when they connect
  • Streaming
  • Add a Matrix bot.
  • Integrate Icinga2 host and service checks functions.
  • Figure out system permissions and how to run as a special user.
  • Give the agent instructions on how to run the system (pulled from the database).
  • Have the agent run every n minutes to check Icinga2 and take action if necessary.