New Beginnings

New Job, new schedule

Just started a new job. Kind of strange how excited I was to get the last gig, and now how excited I am at the new one. Constantly reminding myself it’s just a job. Lots of legacy systems and lots of cruft.

Personal Projects

I’ve been working on Argyle Labs as kind of a wholistic configuration management system for my homelab. There are tons of things in the til that I’ve been building up to this.

High level what I’m trying to figure out is having a Rust binary that runs on various systems(MacOS, Debian, Fedora Atomic/Bazzite, CachyOS, Alpine) that can present and allow me to configure all systems and get warnings within one flow.

It uses Rust Macros to expose cli, mcp, REST(With Openapi spec) tools. The idea being is that anything can be a tool. So essentially one rust macro, produces all surfaces instead of writing it three times. So any function can just be instantly exposed on all of them. The architecture is something I really like. A system that exposes the orca core can install any number of plugins on the system. Orca can connect all of my various systems over a secure mesh so that I can call commands directly on an alpine vm running in proxmox to configure docker containers.

The things in those containers I have plans to create orca plugins to handle everything from Adguard Home to Plex to NFS Mounts.

The why of it is something I’ve tried explaining to friends too many times, and failed. So. maybe I’ll try here.

Orca is a multi tenant system mesh to allow an operator to deploy, maintain, interact with everything within their homelab from a single pane of glass. The goals are to be able to create a multi deploy target with migrations from one to another. So in theory you could deploy Plex to a Proxmox LXC, migrate it(with library) to Docker, Migrate it to a VM, all with setting everything up it needs in the correct environment in the correct way.

Doing this in a way that the orca core exposes implementation primatives and each plugin utilizes those primatives. This does a couple of things. I can put certain heavy rust dependencies in orca core like reqwest, and every plugin just doesn’t need to know about it, and uses the orca compiled primatives from the orca toolkit. That also means that individual plugins hold their own specific dependencies, like docker.

Additionally the orca toolkit has openapi and graphql generators. So you can use some specification to auto generate functions that can be exposed as orca tools via the macro.

The tl/dr is: I made a Rust binary that is >30mb, and plugins that are >1mb to be able to setup a multi system communication integration platform.

Still working on the specifics, and right now I’m migrating lots of things out of core. Some of the most recent things to become plugins are things like SMB NFS, OpnSense. The domains are really specific and all universally expose things in the same way.

It’s a really neat system.