/horus

My personal assistant bot, used to converse with GPT and custom modules, perform outreach, and be accessible through many implementations

Primary LanguageGoGNU General Public License v3.0GPL-3.0

alpha Contributors Forks Stargazers Issues License LinkedIn

GoDoc




Logo

Horus

A personal assistant bot, created for all my needs

Table of Contents
  1. About
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About

Horus is my personal assistant bot for any and all purposes. The desire to create them came from a wish for a personal assistant that could tie into specific user information, such as emails, calendars, Notion databases, and more.

Horus currently has two main capacities: functioning as a GPT assistant (off of OpenAI's client and function calling, though with goals to eventually pivot to Llama3), and performing outreach to the user to give live updates/reminders.

These functions are achieved using implementations, which use basic Horus functionality in a specific user interface, such as a Discord bot, speech to text, or website. All communications occur through HTTP channels so the same base Horus runner can supply multiple implemenations with consistent information.

The bot directory contains a generic assistant template for Horus to run off of. Custom modules are utilized with OpenAI's tool functionality to handle custom functions. The main idea of this module is to take advantage of GPT assistants with easily maintainable, custom-made modules.

The outreach directory contains code used to reach out to the user unprompted, such as for reminders or alarms. Different types of 'messages' exist to contact the user and are defined as follows:

  • Dyanmic Messages: used to check dynamic content repeatedly and send a message to the user (ex: check a schedule database every given interval and send the user a message when the start time lines up)
  • Static Messages: used to message the user at a set, fixed time according to a cron string (ex: send a daily calendar digest every morning at 7:00)
  • Timed Messages: used to message the user once after a given time (ex: send the user a reminder after 3 hours, or send the user a reminder on August 11th at 16:00)

The implementations directory contains different implementations of Horus. These implementations allow the user to interact with Horus, and can contain utility functions specific to the implementation type. Current implementations include

  • Discord Bot
  • Terminal Interface

(back to top)

Built With

(back to top)

Getting Started

Horus is built by me, for me. A plethroa of generalized assistant bots exist to use for a wide variety of general purposes, but this bot was built with specific intent to provide me with specialized usecases. Because of this, Horus is not an "install right out of the box" kind of assistant. If you'd like to make use any of this functionality here, I'd recommend using the code as a template and custom-coding your own modules.

Here is a list of different sections of the code base and how they can be customized:

  • /bot: add/modify custom modules according to the /bot/template directory. Implemented modules contain details about usage and credential needs
  • /outreach: add/modify custom messages according to other examples
  • /implementations: add/modify configuration setup to meet personal needs

(back to top)

Usage

Horus can be used as a personal assistant through many implementations. Pictures of example usage will be located here in the future.

For more examples, please refer to the documentation.

(back to top)

Roadmap

  • Outreach
  • Speech to text implementation
  • Horus API
    • API Wrapper
    • Implementation API Usage

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

For issues and suggestions, please include as much useful information as possible. Review the documentation and make sure the issue is actually present or the suggestion is not included. Please share issues/suggestions on the issue tracker.

For patches and feature additions, please submit them as pull requests. Please adhere to the conventional commits. standard for commit messaging. In addition, please try to name your git branch according to your new patch. These standards are a great guide you can follow.

You can follow these steps below to create a pull request:

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b branch_name)
  3. Commit your Changes (git commit -m "commit_message")
  4. Push to the Branch (git push origin branch_name)
  5. Open a Pull Request

(back to top)

License

This project uses the GNU General Public License.

You can find more information in the LICENSE file.

(back to top)

Contact

Ethan Baker - contact@ethanbaker.dev - LinkedIn

Project Link: https://github.com/ethanbaker/horus

(back to top)

Acknowledgments

(back to top)