Hacking on Engoblined Shepherd

Hi Spritely!

I really wanted to talk about goblins+shepherd as part of my lightning
talk at Dweb Camp in Germany later this year, so I started hacking
something together. I finally got to the point of connecting my Emacs
to a REPL with a running engoblined shepherd (a shaman?), and was able
to start/stop services from different vats. Since running a REPL is
so important to the hacking process, I thought others might be
interested in a cheatsheet for getting there, I made a short writeup
here:

I’ll update it as I make more progress towards my goal. As for what
my goal is, without getting too into the weeds, I’ll say I have
networking nodes and resource nodes, and that resource nodes have TLS
keys (and networking nodes importantly don’t) but traffic is routed
via networking nodes. Furthermore, each node should be a full backup
of a given domain, and hence should be able to generate it’s own
top-level domain TLS key via certbot, so they must have the capability
to divert port 80/443 requests for the top-level domain towards that
node.

4 Likes

Whoa this is awesome! Thanks for sharing!

Oh hell yeah I love this! I haven’t had a chance to play around with Goblins Shepherd myself yet so this was a good intro to what’s available in it.

And now I’m wondering who the Goblins-interested Guix user was that you met in the wild :slightly_smiling_face:

On a somewhat related note…@dthompson I had mentioned back during FOSDEM that I had played around with Goblins in Shepherd a tiny bit a while back, but didn’t have a link for you at the time. I found it!

@eikcaz This was a very rough experiment from before some of the goblins shepherd integration work (i.e. this was “what if you spawn goblins objects from an unmodified shepherd?”) so don’t take this as a current example at all. But it does show a bit of ocapn usage so maybe it’ll be useful!

(Of course I had an action on my goblins services that just spat out a sturdyref to the newly spawned object… which isn’t exactly what you’d want, I think you’d really probably want some way to define the desired connections between service objects declaratively. But yeah, quick prototype, etc etc)