f1021556dc | ||
---|---|---|
assistant | ||
config | ||
core | ||
interfaces | ||
tools | ||
.gitignore | ||
README.md | ||
bun.lockb | ||
env.sample | ||
exp.ts | ||
index.ts | ||
package-lock.json | ||
package.json | ||
tsconfig.json | ||
usage.ts |
README.md
Anya.
cheaper jarvis
Disclaimer: This project is in no way intended for production use. It is an experimental project that I have made for myself to see how far I can push LLM models to manage my tools for me. A lot of the code does not follow standard best practices as my priority was experimentation rather than production readiness. Over time, I plan to slowly refine this project, making it better and easier for others to use and contribute. For this public release, I've tried to make as many tools as I could configurable, but by the project's nature, not every tool yet is fully configurable from the .env
.
Current Abilities:
- Multi user support.
- Support for discord for user interaction and whatsapp for events.
- Support for voice input through on_voice_message event.
- Support for external events to trigger anya to execute any given instruction.
- Support a schedule to trigger anya to execute any given instruction.
- Can store memories for certain tasks.
- Can understand voice notes (warning: this currently uses openai hosted whisper which is unnecessarily expensive, so do not use this if you are more than one person using this)
- Talk to anya shortcut (https://www.icloud.com/shortcuts/62e5a50276464de6bfb7b67fecf1f0de)
Current Tools & Managers:
- Calculator: Can perform basic arithmetic operations.
- Get time: Can tell the current time.
- Calendar Manager (Uses CALDAV):
- Can manage a user's calendar. (not yet configurable per user).
- Cat Images: Can fetch random cat images.
- Chat search: Can search for a chat message in a convo.
- Communications Manager
- Send Email: Can send an email to a user.
- Send Message: Can send a message to a user. (supported platforms: discord, whatsapp)
- Docker Container Shell: Can execute shell commands in an isolated docker container. This requires /tmp to be mounted to the container as this is how it can share files with the host to then share files with the user.
- Local Code interpreter: Can execute code in python in the above docker container, this allows for the model to install any dependencies it needs.
- Events Manager
- CRUD on Events: Setup events that can be listened to. (webhook based, need a one time manual setup for each event).
- CRUD on Event Listeners: Setup event listeners that can call anya with a given instruction. once that event is triggered.
- Files Tools (Currently disabled by default)
- CRUD on a single s3/minio bucket.
- Goole Search (Currently disabled): Can search google for a given query.
- Home Assistant Manager:
- Can update Services: Can run services to control devices on a home assistant instance.
- LinkWarden Manager:
- CRUD on Links: Manage links on a linkwarden instance.
- Meme Generator: Can generate memes.
- Memory Manager:
- CRUD on Memories: Manage memories for anya and other managers.
- Notes Manager:
- CRUD on Notes: Manage notes with a defined template using webdav to perform crud on respective markdown notes files.
- Periods Tools:
- Period Tracking tools: can track cycles for a user.
- Mood tracker per cycle: Can save mood events in an ongoing cycle.
- Search: Can search through for events since the beginning of all tracking.
- Reminder Manager (Uses CALDAV):
- CRUD on Reminders: Manage reminders for a user.
- Scraper (currently disabled, but still can use the shell env or code interpreter to scrape): Can scrape a given website for a given query.
- Services Status: Can check the status of a given service.
- Youtube Tools:
- Summerization: Can summerize a youtube video.
- Searching in Video: Can search for a query in a youtube video.
- Download: Can download a youtube video.
To install dependencies:
bun install
To run:
bun run index.ts
This project was created using bun init
in bun v1.0.11. Bun is a fast all-in-one JavaScript runtime.