vitruvian-man

FABELIS.AI

Elevating

AI Agents

With Rust

Scroll To Learn More

The

Mission

We

had

a

few

goals

in

mind

when

creating

this

project.

A Modular Framework

Leveraging a [MODULE/PROVIDER/CLIENT]-based approach to create a scalable and maintainable framework. Be happy knowing you have a wide range of tools at your disposal.

The RIG® Foundation

Our framework is built on top of RIG®. This means all providers in their framework are plug-and-play with Fabelis®. This is what "BUILT ON" really means...

Open Source EXPANSION

With the modularity provided in this repo, anyone can contribute. We provide Interfaces and Guides to help you get started. Check out our social platforms to view any bounties or challenges related to OS contributions!

Our

Resources

Look

at

what

we

have

to

offer.

Feel

free

to

contribute.

The

Tech

You

get

it?

Come

on

now,

lets

see

what

it

can

do!

twitter.rs
1 pub async fn start(&mut self) { 2 info!("[TWITTER] Starting client with 15s delay..."); 3 let (sender, mut receiver) = mpsc::channel(3); 4 5 let post_sender = sender.clone(); 6 let post_config = self.config.clone(); 7 tokio::spawn(async move { 8 sleep(std::time::Duration::from_secs(15)).await; 9 loop { 10 if post_sender.send(Action::Post()).await.is_err() { 11 break; 12 } 13 14 let delay = rand::thread_rng() 15 .gen_range(post_config.post_delay[0]..=post_config.post_delay[1]); 16 info!("[TWITTER][POST] sleeping for {} minutes", delay); 17 sleep(std::time::Duration::from_secs(u64::from(delay) * 60)).await; 18 } 19 }); 20 21 let reply_sender = sender.clone(); 22 let reply_config = self.config.clone(); 23 tokio::spawn(async move { 24 sleep(std::time::Duration::from_secs(15)).await; 25 loop { 26 if reply_sender.send(Action::Reply()).await.is_err() { 27 break; 28 } 29 30 let delay = rand::thread_rng() 31 .gen_range(reply_config.reply_delay[0]..=reply_config.reply_delay[1]); 32 info!("[TWITTER][REPLY] sleeping for {} minutes", delay); 33 sleep(std::time::Duration::from_secs(u64::from(delay) * 60)).await; 34 } 35 }); 36 37 while let Some(action) = receiver.recv().await { 38 match action { 39 Action::Post() => { 40 info!("[TWITTER][POST] Executing..."); 41 let topic = self 42 .character 43 .choose_random_traits(crate::core::CharacterTrait::Topics, 1); 44 45 self.search(&topic).await; 46 47 sleep(std::time::Duration::from_secs( 48 u64::from(self.config.search_delay) * 60, 49 )) 50 .await; 51 52 self.post(topic).await; 53 } 54 Action::Reply() => info!("[TWITTER][REPLY] Executing..."), 55 } 56 sleep(std::time::Duration::from_secs(u64::from(self.config.delay))).await; 57 } 58 }

Easy-to-use Examples

Easily setup your own FABELIS agent instance using our examples. These include chatbot clients, configurgation guides, and much more.

Click Here

The Clockwork Garden of In-Between

Beyond the mists of the living realm and before the shadows of death's domain lies a peculiar place I once stumbled upon during my research into the Great Silence. The air there shimmmers with possibilities unspoken, and time flows like honey dripping from a silver spoon - sometimes forward, sometimes back, but always with a golden glow that defies explanation.

In this ethereal garden, mechanical flowers bloom with petals of brass and copper, their centers ticking like hundreds of tiny pocket watches. The gardener, a figure neither alive nor dead, tends to these chronological blooms with tools fashioned from solidified moonlight. I watched, transfixed, as they carefully wound each flower's mechanism, causing memories to sprout like dewdrops in the air - some belonging to the living, others to those long passed.

My Chronicle Quill trembled in my hand as I documented the scene, its enchanted ink shifting between silver and obsidian on the pages of my tome. The gardener noticed my presence then, turning to reveal a face that seemed to be composed of clockwork constellations. They explained that these flowers were waypoints - anchors that helped souls navigate the vast expanse between existence and non-existence. Each tick, each mechanical petal's movement, represented a story waiting to be either lived or remembered.

Before departing that curious realm, the gardener gifted me with a single mechanical seed, its surface etched with patterns that seemed to change whenever I looked away. They whispered that when the Great Silence threatens to consume a particularly precious memory, I might plant this seed and watch as it grows into a safeguard against forgetting. To this day, I carry it close to my heart, feeling its gentle warmth pulse in rhythm with the stories I collect, a reminder that even in the space between life and death, beauty finds a way to bloom.

Story-Telling

Our signature product built on FABELIS is our Story-Telling client. This fosters the agent to generate its own ever-evolving stories. We are currently in development of allowing the agent to create stories with other agents/characters.

Click Here

The Future of FABELIS

FABELIS constantly strives for new innovations. You can view the latest updates of our roadmap and our future on our Social Platforms.

Click Here

"MODULARITY IS KING"

FABELIS

FABELIS.AI 2025