I really like local apps for their simplicity and privacy and hate paying Saas bills and I wanted a way to start automating my life with AI so I started building Anything.
Anything is built on Tauri so the front end is React and the "backend" is Rust.
It's 100% local & 100% doesn't ask you to spin up docker to use.
Another core goal of the app is to get away from "package bloat" you see in other general purpose AI oss projects where they have a package.json that is 300 lines long ( more on that later. )
Oh btw I suck at Rust! I learned Rust while building this so the code is _not good_ yet. Be warned!
>> The app is 3 core pieces
wysiwyg editor -> react, react-flow
work queue, db -> sqlite
flow execution -> triggers, actions, etc
>> Everything is just a file -
All automation configuration state is "just a file" so you can persist your work and changes in git and share it easily over any medium.*
An important side effect of state being "just a file" is it makes it easy to let LLM's write and update the config automatically with very little added complexity.
>> More on execution system and package bloat
Using Zapier as the example easily groked Anything has Triggers and Actions.
Each Action is paired 1:1 with an extension. Think of extension like in VScode but instead of changing your UI or linting your code they execute an action.
Since extensions power the app you only need to bring the extensions you want.
Package bloat destroyed!
When you download an extension it "publishes" a configuration object to your file system that makes it available in the UI to be configured and added to an automation flow.
The UI reads directly from file system to show available triggers, actions etc.
Each extension is a dynamic Rust library that can be loaded at runtime. In the future it will all be WASM but my noob Rust skills have kept this from being done yet.
Since we are in Rust land we can also use lots of different languages to create extensions and as configuration in actions to run ad-hoc JS, Python, etc like you might be used to doing in Pipedream etc.
Basically anyone can create an extension that runs an action if they want to do somethings special not yet built. This is also a really nice escape hatch to let people have custom looping, forking or decisions which is a common hard spot in wysiwyg logic editors.
Along with registering an execute function, and a config object, each extension will also register a validation function. *
This lets us do what I call "deterministic magic" where no matter how much LLM's or users are hallucinating while they are trying to configure actions on the fly they can get repeat deterministic feedback from the extension until the action configuration is valid.
Currently I have built two triggers and 2 actions:
Triggers: Manual Cron
Actions: CLI HTTP
To Use AI Locally so far I have just connected it to LM studio via HTTP vs spending a week trying to get a bad implementation done of a local AI extension.
Would love your feedback!
Carl
Demo Video: https://www.loom.com/share/c71dc4d5a07c4424b3f6d5bbe218549f?...
Github: https://github.com/tryanything-ai/anything
Download Links: https://github.com/tryanything-ai/anything/releases/tag/app-...
Website: https://tryanything.xyz
* ok part of this isn't done. It's been in and removed again and will come back