Table of Contents
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
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
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.
- 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).
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:
- Fork the Project
- Create your Feature Branch (
git checkout -b branch_name
) - Commit your Changes (
git commit -m "commit_message"
) - Push to the Branch (
git push origin branch_name
) - Open a Pull Request
This project uses the GNU General Public License.
You can find more information in the LICENSE file.
Ethan Baker - contact@ethanbaker.dev - LinkedIn
Project Link: https://github.com/ethanbaker/horus