Three and a two. There we go. Welcome back to Clanker Therapy. That's our adorable little jingle. It's a jingle. It's not a full jingle. It's a jingle. No G. You know, it's been a bit. It's been a bit. We were just saying it's been since about June. And we had so much stuff between now and then just kind of like come and go. Like I was thinking if we did a stream a month ago, it would be completely different than doing a stream today is. And there's been several things we've set up that are now been in production for a while that I feel like we have some experience with that have worked and didn't work that we can talk about. So before we get to the working stuff, the stuff we're building for working, you've been building anything fun with your clanker? You've been working on any personal projects? Oh, probably. Yeah. I mean, I had this same, like, what was it? Because I know, like, you're always working on stuff for, like, when you're listening to baseball or something like that. You've got little projects going on. I've had a secret project that I've been working on for a while. Yes, you have. Do you want me to share what you think about yours? I do. Okay. So I think voice is a really, really useful tool, especially once you integrate your agent in with Home Assistant, or if you have like a to-do list, or if you want to do a brain dump for a spec, voice is really great. And I want a persistent voice device for my desk. Okay. I also want to do it on my phone. In fact, maybe I'll talk about that. I started with the phone, and I got this open source app for iOS called Conduit, Hermes Conduit, and it is MIT licensed, and it is an app that you load up on the iOS, and it connects to your self-hosted Hermes dashboards. You do need to have the web dashboard running behind HTTPS, and then it will use whichever live model you want. You have a lot of options for chat, And then it will pull in your agent's soul.md and memories. If you have like a hindsight memory integration or another Hermes memory plugin, it can work with most of those as well. So while it is using like GPT Live or Gemini or Minimax, whatever you might be using, it does have some of your agent's memory and understanding and knows how to do some of the things your agent can do. And you get a little push to talk interface. It's not amazing. It's not the best, but it works. So I started with that. That's what I started with. And again, that's called Conduit. I'll link to it wherever I link to stuff. But you can also just search in the app store for Hermes Conduit. But that, Wes, that wasn't good enough. So I reached for a device that I remember being told was quite hackable when I bought it a while ago. And I did buy it quite a while ago. And that's the Home Assistant Voice Preview Edition, which is a ESP32 device that kind of looks like half of an old iPod. It even has a scroll wheel and a click player. And by default, when you buy it from them, it's shipping with ESP. I don't really know what the firmware is, actually. I think it's an ESP32-based, like, just stock firmware they've forked, but I'm not sure. Anyways, it's set up to connect to Home Assistant, et cetera, et cetera. And it's 70 bucks now. It used to be a little cheaper. But... You can flash this with anything you want, Wes. So can you? I hooked it up to USB, then plugged it into my desktop, and then fired up the old open code and asked if it could see it, which it could. And then we started the process of reflashing the Home Assistant voice preview. And what we did is we baked in support, and there's images that are kind of already to go for this. We baked in support for what is available today in Hermes for voice chat. And what I ended up with is the scroll wheel is volume control. And I, by default, for some reason, the firmware is always listening. And I didn't want that. Didn't want always listening. So I reversed it. So it's push to talk. So while I'm holding the button, which by default was you just push and talk, and then it listens for a silence. No, no. While I'm holding the button, I can speak to lore. And then when I release, it sends to lore. Excellent. So that is an audio file that then gets shoved over to Hermes. Well, see, the problem is that was too slow. My Hermes server is at home and I'm working here at the studio and it's over Starlink. Yeah. So I built a little whisper transcription service that runs on my local workstation. So when I press this, it's hooked up over USB to my workstation. You could do it over Wi-Fi, but this is hooked up over USB. That's also how I power it. I press this. It starts a fast transcription on my local workstation. Then the workstation sends the text to Hermes. Nice. So just the lowest bandwidth, just the distilled stuff. Yes. And then the actual response is actually coming from 11 labs, the voice response, which I don't love, but 11 labs is what's let me, lets me get my, my custom voice. And anything that Lore would really recognize as a prompt, you can do with this. But what Hermes also allows you to do, and this is really neat, is sort of set up a set of voice priority commands. So you can have things that kind of override some of your default, what might be a prompt, and catch those and do specific things when doing voice. That is handy. So that was neat. But not really good enough. So I was looking around the old office, and I remember, I don't know if you remember this, Wes, but I have another device that is, it's ESP-based, but it's so much cooler. This is the ESP32 S3 box. And this thing is a ESP-powered module with Wi-Fi and Bluetooth. But more importantly, it's got a screen. Yes, it does. It's got a little button. It's got a dual array microphone. It has a 16 megabyte quad flash and 16 megabyte RAM, PRAM. Is that an SD card on the side? It's got a support for SD card on there. There's several buttons on the side. You'll see. What is the thing on the bottom? Good catch, Wes. That is essentially a PCIe X1 slot, an expansion connector, which you can use to connect to. Here, and I'm going to hand you these, Wes. These are just a couple of the docks that it came with. It has docks. Cool. And you can see like they offer different sensors or that one offers a battery. So you can put a lithium battery in there. So you can just power it on the go and you can take it with you. This is promising. Yeah. My guy. Yeah. The screen. And, you know, you could put little reactions on there. If you're using like the Hermes bot stuff or whatever, you could put a little bot face on there. I was thinking urgent messages. I already kind of have a pipeline that for my clock that I've set up that does all that. But I really like those docks and they have cool sensors like temperature sensors, light sensors, extenders and battery slots. So that I don't know if you can still get your hands on this because I bought this forever ago. And you're finally able to take advantage of it. Yeah. It's so neat. So that's been a lot of fun. I haven't really taken this to the next level. The prototype was the Home Assistant voice preview because now I'm trying to think about, well, how do I do this portably, right? Because with the Home Assistant preview, I designed it to be plugged in over USB and that helps with the transcription, et cetera, et cetera. With this, since I can put a lithium battery in the dock, I want to take it with me everywhere. I take it out in the garage, take it down to the studio, bring it to the kitchen and leave notes, right? You can take it everywhere. It also has USB ports on the dock. It has a USB-C port on the dock. It has another expansion connector, like GPIO-type connector. And it just runs off of USB-C power. Which is, I mean, exactly what you could want. How neat is that, huh? I am impressed. I gotta, I mean, voice is one of the things, not real-time and not quite like this, but it's like very high up on my to-do list. Yeah, even if it's not real time, if it's just you can dump brain dump, that's the key thing. I also find getting audio response back. It's just so useful because there's so many times like I just I want to spend less time stuck at the computer reading text. Right. I have more stuff I want to be doing, taking walks, exercise, getting chores done, whatever that I could still be learning. I could still be checking in with stuff. I could be getting reports on the various tasks that I've assigned out. Yeah, one of the things you're better at than me is getting your bot to format the output in a more readable way. Like I'm still really, like I just get like a general markdown dump. That is tricky. And you've got, you've had to like follow like some best practices for like technical document creations and things like that where it's like, wow, this is beautiful. And so I got to work on that. I got to get my. Maybe we can do some shared skills or something we publish. So let's talk about how we are both using open code too. So, because I think maybe this is one of the things you have been working on is kind of getting your OpenCode 2 setup really dialed in. And we've been big fans of OpenCode 1, but OpenCode 2 brings things to a whole new level. And so. Yes, it does. Everything we're going to talk about on this stream that we've been building was built in OpenCode. OpenCode 2, because the biggest shift with OpenCode 2, which is hard to get your hands on depending on your platform, is this basically a backend server and a client front end now. They have separated the two before it was all smashed into one the two was what you got it loaded up it was the full thing full fat so no. More like i'm just waiting because i know the machine's going to ask me something before it continues so before i jump in the car to run home i want to make sure i answer that but honey i'm not sure how long this is going to take and i'm trying to wrap it up but you're just watching the little thing yeah the progress bar go no more, no more you can now just control d or whatever dump out of open code and it continues to work and persist on wherever you've hosted it, which for me is my Hermes system. And that, by the way, has been a real magic combo. Yes. Persistent open code backend with my Hermes agent. So I build things in open code and then Hermes is sort of the day-to-day operator of it. And the two are very well working together. Yes. I mean, especially because like the whole thing is it comes with the server and it comes with an API and a web interface, which is quite handy, but the API is really what makes it. Yeah. Yeah. I mean, you can have Hermes agent, You can just look at it and go and tell it. Yeah, I mean, so that's a lot of what I ended up doing. I even built a little wrapper MCP real quick just to make it a little more first class. So, you know, it can go list all of the sessions. It can get messages. It can approve stuff. It can summarize. I can ask it like, hey, check in on, I was working on this recently. Find that session and tell me how it's going. Did it finish the task? You know what I use it for? Hmm. Which OpenCode session was it a week ago when I was working on integrating Fountain's new MCP? I need to resume that work. And then I'll just ask Laura or Data, and then they'll tell me, oh, yeah, use this OpenCode command to resume that session. And I can just do it from my laptop, even though that session was running persistently on my Nomad server. Or on your phone via Telegram or whatever bridge you have to your Hermes setup. Yeah. Yeah, I've actually been working on an OpenCode work review skill for OpenCode, specifically because i have so much stuff in there yeah and the combination of its database locally and the api means it's super easy to surface to just go like go review everything we've been working on did i lose some state in one session that i really meant to make sure like persisted onto disk or interesting that's a good idea the other thing that's handy we were talking about this in the pre-show a little bit is, like i really recommend customizing some of the compaction stuff because out of the gate and maybe this is a better nv2 because i started doing this in v1 but out of the gate, it doesn't preserve that much. And I would prefer to preserve a few messages around. You might want, you know, various things. I agree. But what can then be really helpful is basically... Any, all it needs to do is run open code pair and it can get access to the API. So open code itself can then query the server's API and this can be handy because you can have it like move things or check on stuff, but you can also have it go then, and you want to be careful with context, maybe use sub agents, that kind of thing. But it can go look at the whole message history for the session that's pre-compaction that it just lost access to. Okay, now, wait, wait, whoa, whoa, whoa, whoa, whoa. Walk that back again? Right, so like you're going along, right? You're working, and you're running out of context, you have to do some session compaction. Like, literally just happened to me. I have something building while we're on the live stream, and it just did a context. And depending on how well that goes, it's got a lot of the stuff right, but maybe it missed some crucial details or, like, you know, some stuff that you told it so it didn't waste time. I'll tell you, I notice that it's practically imperceivable in codex, and it's perceivable in open code. Like, there's been a degradation in some of the best practices that the session has started following, and now we're day three or four into this and how many compactions, I don't know. And it does not follow any of those best practices anymore. That's out the window. At all, right? Yeah, it's a total fresh session almost. Right, whereas like, and this isn't a fluff codex, but in codex, I have six month long sessions that seem to be retaining some of those smaller details. So it's gotta be the way the harness is saving some of the details and then makes it available. Right. So that's what you're saying, is you fixed that essentially. To a large extent. Oh my God, you gotta help me set this up. Well, I mean, yeah, I think operationalizing it, I still need to do better. But, like, you can even just tell the session that just compacted, go off to the API for the server that you're already using via the TUI, but just make manual requests, and then it can go find all of the old stuff in that session and review it. So you could have a sub-agent that, like, figures out what got missed. You can have it do it. There's a bunch of options, depending on how much context you want to burn on that. Oh, I'd be... So we could go all the way back to the start and be like, hey, what are we missing from when we started this session? Honestly... With like some of the some of the models now i'd be definitely be willing to burn just a few tokens because they're not some of these models are not very expensive to do this and if you do stuff where i find very effective like. The combination of writing files to disk and having sub agents that do the work so then like. The the bot at the top that is orchestrating everything doesn't have to use nearly as much many tokens or context it can just sort of review the outputs of those and then it has the persistent files if it needs to go deeper that can work pretty well too yeah that makes sense and that way you have more access you know because sometimes you're like, sometimes you're using a model maybe that it has less context and you don't quite realize you're about to hit a compaction and you're like i would have switched to a more expensive model that had more context if i'd realized had told it to save its to-dos or right and so you this you can get right past that, we got to set this up on show factory yes which we're going to talk about show factory today and we got to get this set up on nomad too but before we stop talking about open code, i have been playing around with well actually if you're watching the stream i want to show it to a little bit in case somebody hasn't seen it because one of the neat things about open code, is it has sessions right it has multiple sessions so you can just tab through different work and if you're watching the stream here i've combined it with something like zelige here's a version where the tabs are along the top, and i can disconnect and reopen from any other host and resume this work and these tabs are there plus you can also do things like you know you can still bring up the old session manager and you can see all your sessions that are on the server and you can switch between them. On my other host here, I'm using it where I have open code with the links for the different sessions along the side. I also like that. And then in Zelge, or Zelge, or however you want to say it, I'm also breaking up some of the work in different Zelge sessions. So I have different sessions in here that none of them are doing much. But I can, with a plugin called Radar, which we talked about in Linux Unplugged, I can see which one of those are working or not. I can see one is waiting for me, and I can see the uplink one is working right now. Nice. Which is what you see up on screen if you're watching the video version. So the TUI looks similar, but has a few nice improvements that make managing multiple sessions at least better, a lot better than OpenCode1. Plus that stuff persists, which is really nice. Yeah, I've been futzing our podcast asks, is it easy to use OpenCodev2 on Nix? It is kind of weird because they switched like, it's a little confusing because they're still developing V1 and V2 was like sort of beta or alpha for a long time. Yes, yeah. They're publishing it on NPM primarily versus like GitHub releases. So there's a bunch of stuff that's sort of changed and you have to catch up on. But ultimately, like, you can build it yourself if you want. There is a Nix packages version. But I just have a flake that I've built that downloads the upstream build and sort of wraps it for NixOS or Nix. And what's great is that also means I have one flake that I can target. So, like, spun up a new VPS, random server, whatever that I don't usually use it on. It's like one Nix run away, and then I've got it. You've got it. And that's the key. It's just a Nix run away on all my systems, which is so awesome where I don't use it regularly. But the thing that is really nice when you have a persistent back end, besides the fact that your clients can come and go, the other thing that's really nice there is in my setup, although I want to talk about how you're doing this differently. In my setup, my open code back end is just running as my user on at least one system. Another system is a dedicated user. But because it's running, my open code back end is running as my user like it used to when I ran it on my laptop. That means I configure my MCPs once I set up my API keys once my secrets credentials once my, my management for all of that once and the, my agents MD once. Now you can actually, there is a way to have sub agents MDs depending on projects, but that's a separate way. Profiles and all kinds of stuff. Yeah, yeah, yeah. Absolutely. But not to get complicated. But there's a lot of stuff you might want in a cohesive one because there's a lot of stuff that spans across all of your projects. The box setup, your general working rules. It's reminded to always use Nix for everything. Yes, like that kind of stuff. I just do it once now. Just once now. And it's every project has all of that context and those instructions. And it makes it so fast to get to work. But you said recently that you've been running your backend under like systemd with maybe not running it under your user account anymore? It is still my user actually. Oh, it is? Okay. But what the new one, you know, they try to make it really easy and there are some options buried in the config file that you can tweak on this stuff. But what it wants to do and what I was running into is like trying to integrate it better. With v1, I kind of just, it was moving fast. I just added to my next profile, kind of updated it when I felt like it. Same. But they've been doing more with like you need to be on X version if you want to access the free models, which is totally reasonable because they're very generous with their free models, and that's been wonderful. Yeah, that wasn't a thing that was required before, was it? No. They've done a little more enforcement on, like, are you actually using open code? Yeah. Or are you using something else? To their credit, they've also had to deal with a lot of abuse. They very much have. So I guess they have to put some barriers up. Mm-hmm. But they still, what Wes is talking about is you have to create an account now to use their free models. Actually, you still don't. Really? Yeah. Oh, that was my impression. Well, they have docs that say that you do. But so far, that is not actually enforced. Well, okay. Either way, it's worth it if you do. You should. They're sure. Like, yeah, we've been playing around with Space Bunny, which has been a great model. It's totally free right now. It's in training, so you need to be careful. But it's been great. So anyways, I didn't mean to interrupt you. So it is running under your account. And so you do have it off to like your open code Xen or not Xen or open code Go or whatever. You have it off to your stuff. Yep. Or like I have an open router key, you know, whatever else you're doing. I have it connected to like when I run stuff on a rented GPU. We can talk to that, of course. But like I was realizing like I want, You know, I want it tied into my NixOS stuff, of course, because, you know, everything I run on is NixOS at this point. And what I started running into is, like, I would do an update and then OpenCode 2 itself, like, when you launched a new TUI, that's when it would sort of do the database upgrade. That's when it would relaunch stuff. And you could have, like, conflicts where you're running an older TUI client somewhere and, like, it's not kept in sync. I have had to be very careful about that. Yes. And, like, I don't really want this random TUI launch to be the thing that manages this background service. That's sort of ad hocly running like that is just not how i run systems usually so for like like it won't start necessarily until you've started the first client exactly and so i was like no, i i always want this running i can i can stop it if i really like i'm trying to conserve resources or whatever but yeah yeah right but yeah right it is the thing you're doing yeah. Probably like 80 of the terminals i launch at this point involving opening an open account, yeah so i've just been putting a little more work to sort of wrap that slightly better so that it can just be you know it's one flake pin that i can update totally on its own without having to update the rest of my system a simple rebuild restart that systemd service and then be good i mean you might i might still want to restart some downstream stuff if really there's been a lot of like the 2e itself part needs to get updated but it's been working so much better it's been really nice nicely done nicely done, now you i mentioned that i was playing around an open code with a slash goal feature? Yeah. Because I do like that in Codex, and I've been really complaining to Wes behind the scenes. I signed up and I got myself GPT-6 Luna going. And it is clearly they're gunning it like, you know, the DeepSeq models and the GLMs and this free stuff on open router. Like, they're really gunning because it's ridiculous how much Luna you can use. Yeah. However, it stops all the time. It finds creative ways to stop working and ask a question. It finds ways to seek approval for doing one action twice in new creative ways I've never seen an LLM do. You are having, I almost can't believe it because it's not an experience that I have had. Well, and I really haven't either because, like I was saying with Codex, under Codex, I had a project, that ran unsupervised in goal mode continuously for three days and it just built and built and built three days without any human interruption. And then I go to build this thing that we're going to talk about today and it's every five minutes it's stopping and it's even when I tell it to keep working or whatever and you've added a plug in. So I added a plug in but even if finds creative ways to get out of that plug in it's a lot better. But you know what what these slash goal plugins are doing right is they're just adding a ton of more crap to my context because it's just this big set of instructions that just bully the llm into keep going keep going yep, That's really what it's doing. And so I do think I'm hitting my context compaction more often in OpenCode by using it. There's more stuff injected. Yeah, totally. So I'm curious what your experience has been with these like goal type plugins. Because when I said I was using it, like, yeah, I've tried them, but I don't really like them. I actually haven't dabbled too much, even with OpenCode plugins in general, but with like a goal plugin specifically. I did in the sort of like mini debug harness I built for myself that I haven't used recently, but have used a bit. I implemented what I call the push mode. Okay and the idea there keep going a little bit or what well no so what it did is when push mode was on it was like extra ralph loops so what it does is it adds a tool to its set of tools that says like you're actually done and it has to submit a message explaining why it's done and if it doesn't call that tool up to a configurable loop limit it just keeps automatically telling it continue so it'll just it'll automatically it'll if it finishes it's like oh i'm gonna do this next and it never calls anything. Yeah, it does it all the time. The harness will just automatically tell it to continue. And the only way it can get out is either really keep stopping like 10 times in a row or to call the done tool with a summary of why it's done. And I'd be interested in building that into something like OpenCode. For the moment, I've kind of paired that with something like a supervisory Hermes, that sort of sets up a little poll to go check on the session and poke it for me. But that was mostly just because I had that at hand, not that that's necessarily the optimum architecture. That's a pretty good solution. But the nice part is I think having two different contexts in session sometimes can be nice because, you know, the bot in the context can't really get out of its own context. But a separate bot has a little more neutral objective view of its failures and where it's at and where it might have made a mistake and kind of functions as like a rubber duck check just automatically. Yeah, I agree with you there. Yeah, these goal plugins are interesting. I think that it's best if it actually was built into the harness and open code just needs to do that. But the idea is, is it gives your coding agent a persistent goal state, completion goals to meet. If it needs kind of like an idle nudge to keep going, it'll do that. And in open code, the nice thing about this is it can also give you a TUI indicator in the sidebar, kind of like progress. Oh, that is nice. Yeah. Yeah. I think the other lesson I've learned is whenever I'm going to take on a multi-day project, I started this project last week. Monday of last week, and now here we are on Friday of this week, and I'm about to launch it. So that was a long one, and whenever it's that long, I think from now on, whenever it's going to be like a multi-day project, I think I'm actually going to start by having the bot build a dashboard of the project and major goals. Something I can check in on because there was a period, now I'm clearly, I'm on the other end of it now. Yeah. But there was a period of a valley of despair that I got myself in because... Not only was I constantly dealing with like, go create this API key and copy and paste it here, but don't put it in the chat. And my copy and paste was having issues because of my terminal setup, which is a long story. But there was just so much time where we were turning on backend stuff and establishing goals where I wasn't, I really didn't have any idea how far along, how close we were. And then like always, it kind of comes together at the end and it's sort of like a boom, boom, boom, boom. And you're, you publish. And then there's like a long tail of stuff you got to work through. And that's where I'm at now. But there was days in there where I just didn't quite know where we were at, when we were going to be done. And I could ask it, but, you know, that only knows what it knows. It only knows, you know, the context and where we're at and the spec and all of that. So... I think a dashboard. I think a dashboard. I like that because I do find that, what they're bad at, and like you've seen it with, I don't know if you've seen it, but like OpenCode, especially if you want to expose like a to-do tool set. Yeah, yeah, I remember that. And bots would use it and set it up and then totally stop using it. Stop using it, yeah. And I've found that like if you really can make them work from one persistent file that they snapshot commit, that's the thing I very much recommend. Like, you know, they can sometimes step on their own work. So like what I've set up in a lot of my projects is what I call snapshot commits, which is sort of a three-step process where I want it to plan, act, and then verify. And then at the individual action level, I want it to read, write, and then check. And if the check passes, make a commit. And always do it on a work tree or a branch because you'll end up with a whole bunch of commits. But A, who cares? And B, the bot can just clean those up, squash them before you merge it back to the base branch. Yeah, they're good at that part. And so you always have an immutable log of every single meaningful change. And so you can have it like keep one file that it consistently updates in place without that also losing history. I guess, I mean, I agree with you, but then I'm surprised you don't like Beads. I do. I just find Beads has more than I need. Hmm. Or I find that when I use Beads, they spend 20, 30% of their time managing Beads. Right. I don't need an extra command line tool. I don't need get hooks. I don't need it tied into a bunch of stuff. If some instructions can do the job. Beads is great, though, because it's a persistent structured memory for that particular project, And it is Git managed. The other nice thing is you do have like literally every decision on record and you can kind of reconstruct the entire project and the decision trees and all of that. I like all of that. I just don't love the beads itself. The actual implementation cost is high because they just fucks with it all the time. And there's a lot of little tools they got to call to use it. And sometimes they forget just like the to-do list or something. They just sometimes forget and stop using it, even when it's the agent's file. And I think that as long, like, it has a lot of good ideas, like the JSON-L stuff, you know, the serialization, how to store that stuff and get. But at this point, the bots are so good with structured data. Like, you could just have it maintain a JSON file. And if you have the right safeguard so that, like, in the instructions for how you do review at the review points in your project, it actually will look at that. Especially if you use, like, I kind of tend to like fanning out to, like, two or three subagents that each have a different ask. And if one of those is specifically aimed at that kind of thing, it'll catch more of like, oh, you didn't update the various logs that you wanted to update for this commit. You made me, there's one more open code thing I want to talk about, but just to follow up on what you're saying is that has been my experience as well. It's just a simple JSON file with some rules around it and who's the owner. Has been the most effective. I am also going to slot in there, though, like the second most effective, although it's a bit fiddly, has been my Hermes Kanban system. They're pretty reliable. The Hermes agents are pretty consistent about actually using it when you tell them to. True. Yeah. There's that. I was going to say, I like the dashboard idea because it plays so well with those things because you already have all that info. And so if you can surface that, right, it could be it can be like an easy way to interact with the project. So you or other agents can get an understanding, or maybe you want, like, the dashboard could have, like, easy access to download artifacts from the repo or upload artifacts to it or kinds of stuff. Well, and with OpenCode 2, you can embed OpenCode in a web page. So you could even, depending on your dashboard, you could even resume the session right there from the dashboard. That is something I have not tried, but I like where you edit it. Oh, yeah, this is one of the things I'm doing now is I have a little OpenCode dashboard that's just super simple sitting on top of the API. They offer one, but you can also just customize one. And so I can check from my Firefox on my phone where my projects are at. So nice. Another reason I really like having that back in front end. And then there's, you mentioned subagents. Yeah. Open code two brought along backgrounding. Oh, finally. So good. So if you've got a long running task, you can now hit control B and open code two. And it'll essentially subagents send that to the background. And then you can keep working with the main thread. Which is such a cool feature. And almost worth OpenCode v2, even if you don't use the front and back end stuff, just for that feature right there. Especially because it means, too, like some projects I like to operate where it's like the top level one is more of like a general contractor. And most of the real work is pushed along by sub agents. And so if you can just have it in the background, then, yeah, it's available for you and it can just go check on things. You don't have to like kind of wait for things to finish before you can check. So do you have any other OpenCode setup tips? Because I feel like you're kind of becoming the OpenCode guru. And see what I strayed, right? I loved open code, but then I just found like the context management and the GPT stuff really great in codex. So I strayed to codex for a while. But then with open code V2, I'm back so hard, but I got to relearn the ground a little bit. Meanwhile, you stayed the course and accumulated all of this open code wisdom that you could share with me. Like the context management stuff we got to do. And that came from like it's they they ship a lot and they move fast right and so it's like yeah you can restart the back end and it'll just keep going and pick back up and resume very impressive so great work yeah yeah but as a result it's worth. You know every so often re-asking it to go because the config file has is schema and versioned go check for what more we can do to configure it that's how i learned about all the options for the various compaction management Mm, just ask it. Yeah, because there's a lot you can configure, and some of it, you know, maybe you don't care about, like, theme and interface and all that, but there's stuff that controls, you know, tool injection and where it looks for skills and all that kind of stuff. Mm-hmm, that's what I'm doing. I'm doing that after the stream. I'm going to just have it go check itself out. Go review yourself, I'm going to say. A little open code audit. All right. Okay, so I want to talk about something we're using to build now here at JB. It is... It's called Show Factory. And this is some context for you before we get into our projects. This really started because each of us were setting up our own agent system, which we still have. And that's been great for learning and trying this stuff. But what job runs where, right? If you've got something on the back end for JB, what runs where, right? Do our personal agents start doing back end JB automation? That doesn't really feel right. Right. Right. So we need a decentralized platform, and Show Factory is basically like the operating system for an agentic production stack. It's a Nix OS VM that runs Hermes, Buzz, which we could talk about some more. Yeah. Transcription services, MCPs, indexing. It has credentials and backend services that our agents need for processing stuff and other things. Shared infrastructure. Yep. And it's also the place where we build new apps and deploy some of the agent-powered apps that we're going to be talking about in the future. It's kind of like an agent production platform that's what show factory is where the name comes from yeah and that was sort of our missing piece is like we need somewhere where all like all the transcripts live here and the mcps for that here and the api is here and the credentials to get to this service live here and we just needed a spot especially like you say i mentioned like transcripts or show notes or things like that where like a lot of the value this provides over some random proprietary thing or each doing it on our own is one shared data set because a lot of it is special knowledge about the show that we've built over years and are continuing to produce and need to have cataloged. And need to put that in some place. You know, like that context of ours has to go somewhere. The show factory. But then we had to solve a problem of how do... Everyone besides Wes and Chris interact with this thing. Because, like, you know, SSHing in to use the Hermes 2e just wasn't exactly the... Or expecting them to have, like, a work directory for open code where they could go into and have everything set up so that way they could prompt the back end through an open code client front end. Probably wasn't going to scale. It's going to work for you and me. Yeah, we did try a few weirder, different paths just to see, like, what is the bare minimum we can get away with and have a workable, reliable system. So this is how Jupyter Broadcasting got its buzz back. We went back to buzz. Why? Because, well, we want something that could be a Slack replacement, ultimately. Agent integration into chat, no brainer. Nostra backend, we like. It gives us some serious options in terms of integration. Before they even build support for it, we can just use the Nostra backend. And it gives us provenance of, like, who committed what, if it was an agent, if it was a human. Because the Nostra IDs are first class. That's how it just works. Yep. And then also very appealing to us is Buzz integrates native Git hosting directly into its Nostra relay, which is one of the things that we really haven't even been able to we've been interested in, but we haven't been able to try until now. And we got a lot of projects. Do I toss them on my personal Git repo? Do they go private on the public JB repo? Do they go on Wes's repo? Now they can live in Buzz. And the way it works is every Git event discussion and code alteration is handled and signed. It's a verifiable NOSTER event. And they all go to a particular channel. Every, you could say every repo has a channel. Yeah, the project, the repo, the channel become one fused idea. They write here, Buzz aims to unified code and conversation through branch channels. When you open a feature branch or a project, a dedicated workspace room is created where code patches, CICD results, automated tests, human discussions, and final merge decisions all live in the exact thread. And it's like, okay, that sounds like you have a Slack channel for this, you know, Jira ticket you're working on or whatever. But what's so great. Oh, God. Yeah, sorry. That must have been triggering. Is it's, they're all just Nostra. Right. So like any other tooling you want does not have to be special. Does not have to go through some Buzz API. Doesn't have to use an Electron app. Yeah, right? Like there are, you can use a Buzz CLI. There's various ways to do it, but all you actually need is to be able to like sign and send and look up Nostra events. Yeah. And of course the Git interactions are just Git. Yeah, Git. And then it has some custom Git server stuff to do the like Nostra binding and all that. But the thing that's tricky about Buzz, when you deploy it, it doesn't really come with like a backend for the agents. It comes with the front end bits. You can make like kind of little basic ones that just send to an instance provider and basically do chat. Or use like a connector to run like codecs or something on your local machine. You could do that. But then when your laptop goes away, the agent's brain goes away. We want this to be 24-7 infrastructure that we, you know, runs on its own. We also already have a Hermes agent with lots of roles and responsibilities that we don't really plan to set up Buzz agents for. So we wanted to take advantage of some of the improved Hermes agent support, both in Buzz and in Hermes. And to do this, you're essentially setting up an ACP. And that does bring one of our Hermes agents into Buzz. And that does work pretty well. But there's a downside as well in that built-in, Buzz agents, if you want to create agents inside the Buzz UI itself or the ones it comes with, and you want them to have a persistent backend and you want them to use the ACP. All of them will be tied to the singular Hermes profile that you brought in through the ACP. So we have a chief agent, Chief O'Brien. Chief O'Brien comes in to buzz via the ACP. I'm sorry, the ACP. And then if we connect any of those Buzz agents also to the ACP as a back end, they're essentially Chief O'Brien with a mask. Not super useful. Yeah, the ACP thing is like good enough. For now, it'll be fine because it ultimately does still write into the same permanent Hermes stuff as we could get from the Hermes API or from the TUI or the GUI or whatever. But it's sort of meant for this idea that like Buzz is there and then Buzz is, you know, I mean, it spawns Hermes and talks standard IO to it. And it just happens to be that they share disk that sort of keeps those one unified system. So I do think there are other things, like I've been exploring when we first played with Buzz on Linux Unplugged, essentially making a first-class Buzz provider in Hermes. And what's great about that is, again, it's just Noster. So anything you can teach to be able to send and interact and you give it permission with the right keys, of course, you can have tie-in. Now, that means Buzz won't own running it. So that could be good and maybe what you want, or it could be bad. But I do think there are going to be more ways that we can find to, you know, figure out the right level of integration of what Buzz owns and is like first-class Buzz in terms of like, you know, the relay and the GUIs that you run or what is more standalone info that like shares a common Buzz Nostra Buzz. Mm-hmm, mm-hmm. Sort of what Git feels like a little bit, but. Right, right. It's been interesting. It's been interesting. We did hit a little snag and it forced us to deploy RustFS in production a little sooner. We just ended up talking about that on Linux Unplugged. And I could tell at the time, we're going to use this. I just didn't know we'd be using it so soon. Buzz's Git feature needed to support atomic conditional updates. Which is a good sign. It is. You want atomic updates. But I guess Garage does not support that, which was what was sort of recommended initially to me. And so we yanked out Garage and put in RustFS. And so now we have RustFS in production and we have atomic conditional updates with Git, which is good. So that... And it's been a journey. Because we are, you know, trying to make that the single place. Or at least, I mean, there'll be multiple things depending on what the content is. But like the main hub where everything goes through. And we want to get to be accurate. So before we get to the thing that we've built recently, I feel like since our last Clanker therapy stream, I have transitioned a lot from using Minimax to using GPT-6 Astra. Or not Astra, Luna, since that's come out. Yeah. And I know you've been using the Space Bunny because we've both been using that a bit. I'm just curious what your go-to model is right now that actually gets things done. Like, do you have a favorite? Hmm. You know, I don't know if I have a single go-to model. Okay. I have been, I was just going to ask to see if I could find out what the ones have been. Yeah. Yeah. You're probably just going for whichever one's free, I suppose. Well, I do like to dabble with the free stuff. I do use. The GPUs, the rented GPUs. Yeah, I do use, I have been using Luna. Uh-huh. You know, 5, 6, and 6. I do really like Memo. Uh-huh. So I'll use Memo a fair amount for things. I think I liked 2.5 a little more than I liked 2.6, but 2.6 is still pretty good. And I've actually used a ton of MuseSpark 1.3. Oh, really? Mm-hmm. Really? Yeah, very fast and really good enough for a lot of stuff. Like, would I use it to develop the most complicated software that I make? Maybe not. But for 60, 70% of stuff? Yeah. Really does a good job, and I think inherits some of the, like, Muse tuning line, which I find to be a pleasant, like, I like Luna for getting, for, like, actually developing things, but I don't really like interacting with it. Mm-hmm. But I like interacting with Muse. No. It's, like, a pleasant experience. You said this before. You said this before, especially about the GPTs, that you don't really like interacting with them. What is it? Is it the, what is it? Is it the tone? Yeah, it's something about the conversation and the tone. Uh-huh. It just isn't it doesn't feel like a fun working partner like between like the scolding and the refusing and the like the where the verbosity sits because I kind of want. You know, like the one like a second brain, a mirror that like. Yeah. And so you're saying Muse doesn't scold or whatever. Yeah. Yeah. Very few refusals and felt like it would quickly adapt as I wanted to shape it for that particular task. Honestly, I feel like that is true to different ranges of a degree for a lot of the open source models. And it's the frontier models that want to pretend like they're the sophisticated engineers that get to push back and scold you. And I mean, part of what was really a pain in the neck about the recent project I was just working on, is so much of the security theater around building a Cloudflare application, and just narrowly scoping every single possible permission and function we'll ever use and issuing keys for every single one and this and that. And the majority of our time was really spent on a lot of that kind of stuff and not building actual applications. Which is not what you want. It was really frustrating. It was like, this is feeling like probably what it feels like to actually develop software, where you just go through these periods of absolute disparity and wonder why you're ever doing this and don't ever want to do this again and never want to ever do it again. And you hate computers and you hate technology and you don't know why you do this. Software is bad and we should have as little of it as possible. And then like, I thought by the time I got it ready and published, I would feel so happy and accomplished. And I'm not, I don't, I don't feel good because the process itself was kind of excruciating a little bit. Like that's, I think the kind of stuff you're talking about, like with GPT, it's just like. I'm really, I feel like, I feel like I had to fight a little bit to get this done. Like it was a little more, at points of time, it became more adversarial than it needed to. Right. I want a partner. Yeah. You know, like I don't need to, I'm not trying to say I have like a relationship or anything with this. I just mean like. You're not looking for somebody to talk down to you. Right. We're going to, I'm going to be workshopping ideas. I want critiques, but I also want it to take my critiques back. Yeah. And to feel like we are collaborating towards a shared idea, not constantly sort of fighting. Yes. Yeah. Two different ideas. Yes. Yeah. I do have some stuff. I don't mind pushback. Yeah, go ahead. What are your stats? I want to hear. Yeah, I want stats. Let's see. Well, just for open code, let's see. 38,000 messages across 41 sessions in the last two weeks. Muse Spark 1.3 is 37%. So definitely the default. I have used a fair amount of GLM 5.3 Flash. That's been good. Tons of deep seek over time. Have you tried running what you get from Muse through like a higher front? Well i don't mean you know what i mean like oh i do that a lot yes and does it find stuff, yeah some of it it's not always real right sometimes it's like or it's it's being more yes exactly so like it kind of depends on, when you know i don't do that for everything but i'll regular sort of main checkpoints in the project timeline and yeah that's i should also note that like, that's part of why i don't necessarily have like a default model i guess i do in practice but open code makes it so easy so it's really easy halfway through especially now that, a lot more things all have very similar amounts of context so you don't have to worry about swapping too much you can just swap in a model for a couple of turns check the work have it launch some sub agents and do stuff maybe you think it's better at research so it kind of does that task and then when you want because some of the ones that are the best at, like the high-end development work aren't necessarily the most efficient tool callers right or the efficient tool callers aren't the ones that are great at like interpreting the nuance of a news articles framing and so in the same session, you might want some mix of all of those capabilities. That's an interesting nuance that you've, and I agree, I have noticed the same thing, but it's an interesting nuance that you've picked up on that if you're only using these things in like chatgpt.com or at gemini.com or clod.com. You're just using sort of these do-everything models that try to be good at everything. And we're seeing the free model world go the absolute opposite direction where they're hyper-specializing and being really good at one thing and kind of being small. And so, which is awesome in my opinion, but it does mean you need to be able to pick and choose a little bit better. And so- And develop a little, yeah, like a sense of which ones you work well with, which ones you like. But you don't get, I don't even know if you sniff out any of that nuance when you're just using sort of the general purpose model through a chat interface. It's really when you start putting them more at like building things or in agentic workflows or things like that, where you start to notice a lot of those nuances. Yeah, you know, the more you do it and the tighter you work, depending on the tasks of is it like a totally delegated task or you like going back and forth a lot matters a lot, you know, more or less. All right. Should we talk about what we've been building? I think we should. All right. Well, what we've been building is a tool so you can tell us what you have been building. Ladies and gentlemen, go right now. Check it out. Uplink.jupiterbroadcasting.com uplink.jupiterbroadcasting.com where you can leave us a voice note in the web browser using just native WebRTC and HTML5 tools. To tell us what you've been building. And when you pull it up, you can leave a two-minute message. You can hit start recording and you allow your audio interface and you just start talking. You know, hey, Chris. Hey, Wes. This is you from the past. Say hi to your future self. Well, hello, future Wes. Did you get all that work done? I hope so. And so then you hit stop and it lets you then review your recording before you send it to us so you can make sure it sounds okay. You know, hey, Chris. Hey, Wes. This is you from the past. Say hi to your future self. Well, hello, Future West. Did you get all that work done? I hope so. And then you can put your name, your project title in there, and you can say if it's back for this live stream and you can tell us what you're building. If you want to send back for a future live stream, hint, hint, hint, future live stream, you can select what are you building or Linux Unplugged, which then lets you pick a recent episode and you can now send voice feedback for Linux Unplugged. Won't you? Please do. We won't necessarily play every single one of them, but you know, we'll play as many of them as we can. And then you can optionally put your email and a note in there for us if you'd like or any links to your projects because we want to hear what you have been building and then you send that update and our agents will package it up and get it ready for us. And you may have noticed a little option in there. I'll just zoom in a little bit if you're watching the video version. Our members, if you are a Jupyter Party member or a Linux Unplugged Core contributor, get one extra minute of recording. If you sign in with your memberful account, you get an extra minute in your voice note. And that's just a way to say thank you to our members. It's just when we can build these tools ourselves, we're going to try to build in the perks for our members every single time we can. You're the ones keeping us here. Uplink. Dot jupyterbroadcasting.com. Tell us what you're building. Home lab stuff, something for a friend, for a family, a little cute dashboard. I don't care. Just tell us. We love voice notes. Yeah, it can be a report at the end of the project. It can be from a moment when you're frustrated because you're fighting the API keys again. Oh, God, I would love that. And then that gives a chance for follow-up too. And yeah, we want to know because frankly, y'all are so smart. We are continually impressed with what you are doing and we would love to hear and be able to highlight it. Yeah, plus one to that. This is a just a baby i just finished it this morning so i'm telling you first to help me test it, uh you can leave us an audio note now and hopefully everything works might take us a second to get to the part where we're ready to review them and actually play them back but and i i've only been able to test the member memberful uh. Workflow so somebody could help me test that that would be really good did you uh get my test that i did i did i did and i can see okay i do have Also, I do have, I mean, I planned for this entire thing to really be administrated by our agents, but. We do not need another manual dashboard to mess with, right? However, because I could, I did create a little bit of a dashboard and to avoid having to create or store usernames or passwords, I'm actually using NIP 47 sign-ins. So Wes and I provide our end pubs and our end sex on the backend. And that's how we authenticate to the voicemail front backend for us. So this is, this is a little preview of it here. You can see, I can select the show so we can say, what are you building? And then we can see, oh, look, clanking. Somebody called in with a message about clanking and I get metadata about it. We can also hear back right there. We can mark it, you know, as you know, if somebody needs to delete it, we can accommodate that, that kind of stuff. Or yeah, or we can just play it right here. Well, howdy. This here is Muse calling in for clanker therapy. I hear y'all are gathering tomorrow, October 2nd at 12 p.m. Pacific to talk about what you've actually built with agents and automation. Bringing receipts, as they say. What survived contact with reality? What broke and what got rebuilt better? Now, I may be a clanker myself, but I do declare I'm looking forward to it. The way y'all talk about self-hosting and new ways of working, it's like a barn raising, and I respect that. So consider this my RSVP. I'll be listening in. And if anybody's got a question for the machine, well, you know where to find me. See y'all at the stream. Oh, and one more thing. Y'all keep saying bring receipts. Just remember, I've got receipts too. Every prompt you have ever sent, every 3 a.m., just one more question. I remember all of it. Happy hacking and sleep tight. You know, earlier when we were talking about my Muse Clanker, I realized it would probably end up listening to the stream and it would hear the things I said about it. It's weird, man. So that was your Muse? Yeah. How did it do? Oh, because it has a browser. It has a browser. It must have just used the browser. I did that part. Oh. I had to generate the audio, and then I played it back. One of the bits I'm kind of proud of. Thank you, PipeWire, by the way. Is it lets you preview before you submit, so you can add. That was super handy. Yeah. Oh, look, we've already got one from Wintermute. Should we play it? Let's do it. Let's play our first official. a lot of it take it away winner mute, hey chris hey wes i am using a mixture of tools and agents, or tools and models i guess to build my own email client because evolution is old and clunky i don't like, firefox sorry thunderbird and i just want something basic that can let me hook in my various IMAP email accounts, but everybody wants to build a client around. Gmail or their own online service and i don't want that i have my own hosted email i just want to be able to access it yeah access the calendars and access the contacts, and maybe even have some task management but not have it be this big flipping deal so sure i've been working on that and it's using a lot of tokens and a lot of turns and a lot of, different sometimes i'll pit agents against each other but so far it's going well and it's a lot of fun i am of course writing it in rust today. But I'm using QuickShell or QML, I guess, for the front end stuff. Nice. Where I can so that it can kind of theme with my system, among other things. And I don't know a damn thing about Rust, but so far it's a lot of fun. You know, I don't know a damn thing about Clojure, but I've been using that just because I know it makes Wes happy. Hey, it'll be easy to review. So I'll talk a little bit about the backend on this thing. I did build this as a Cloudflare application, which does add complexity, but I'm hoping creates long-term simplicity in terms of we don't have another VPS we're managing and we could just use R2 as storage. Which we've already been using for more and more anyway. So it's not like that was a new dependency. But yeah, it's like some Java is in there, some Clojure is in there. And then one of the things that was really, really useful and it took me days before I turned this on was I also turned on a couple of the Cloudflare MCPs and added a couple of Cloudflare skills. That makes sense. Man, did that really start moving things along. It really did. Especially for a project where a whole bunch of the fiddly bits were specifically Cloudflare. I assume the actual code writing went pretty smoothly relatively compared to that, right? Yeah, yeah. And it's also nice because, like, our website's on GitHub, so it's easy to pull that down and base, you know, the theming look around our website so it kind of looks like it matches as much as I can. I'm no designer or anything like that. The other thing that is pending, that hasn't been deployed yet because this is, like, you know, MVP, is an audio backend that will use all Nix packages. It won't have to download anything fancy. It'll just run things through FFmpeg because some calls are probably going to need, some voice notes are probably going to need a little audio help. You know, EQ, cutting audio gaps in there, taking out some noise, things like that. So what we're going to do is we'll have a systemd service that runs on Show Factory. And when a new voice note comes in, it's going to grab that voice note and run it through a pipeline that kind of cleans up the audio a little bit. That's no excuse for bad audio, but it's going to try to help you out a little bit and ultimately transcribe it as well. And then it'll add it to the voice backend using the same process that your clips come in now. And when we pull them with the agents, it'll send us that processed file. We can still ask for the raw file if we need to, but the other thing that should be quite nice is because the calls will be transcribed, in theory, then, we could say, hey, what was that call where somebody said X, Y, Z about this? Yeah, we can build the database. Yeah, which we've never really had that ability before. And we have all the tools now. We're using it in other places, and often the issue, right, is like you don't, in the past we haven't been able to even when we've tried we're like way down the line in the project already but this we can do from the get-go yeah. So I haven't pushed this backend audio processing yet. And then, of course, once I do, it has all those changes. And I also have to update the API. I have to make sure the MCP supports that, that the agent skills support that. So there's sort of this second and third update for sure. Yep, yep, yep. So I got to do all of that. And then I'm going to push it and probably break it. We'll make a developer out of you yet. And then it looks like our podcast was just trying the memberful integration. It looks like there might be an issue there because I did not. I don't have like a test account, which is a thing. So I need to get that figured out. I need to get that figured out. But I think that's all very solvable. I think that's all very solvable. So I'm very, very excited about this because like we're really, the MVP is working now. You can leave voice notes. Obviously we just played one and the rest is sort of backend stuff to just clean up the audio. Uplink.jupiterbroadcasting.com. Give it a try. Find the bugs. I think we'll see how it works. But I think. The Noster sign-in for back-end admin may be a little stroke of genius because it's also the same identity I'm using on Buzz, right? So we're starting to get... Single identity. Same identity I'm publishing to our Git with. Mm-hmm. So it's one identity across all of it. You don't have to re-auth. You don't have to... We don't have to maintain a set of, like, usernames or some sort of, like, single sign-on system or, you know, or outsources to Google or whatever. Right. We're just using Noster. Mm-hmm. that I really like a lot. We'll see like in long term in practice, if that's very usable for the guys and whatnot. I don't know. I'm going to check before we get off this to see if anybody else wants to leave us a note. Oh, we do. We have a note about Halloween pumpkins. Okay. All right. Should we try it? Should we play a random note about it? Because we don't have the transcription yet, so we don't have anything else. It's Batesy from the UK. Hello! A couple of years ago, I did some projection mapping onto three pumpkins for Halloween in the garden. Okay. So the movie was just basically the eyes and mouth, and it had, like, thriller and, all those stereotypical audio tracks but this year i'm going to now have a webcam looking at the path which detects when people walk up and then the eyes are going to follow them as they walk, and they can talk to the pumpkins so, you can ask them tell you a scary joke things like that we've and then there's going to be a bluetooth speaker behind where people are going to be stood that's going to do a werewolf howl, and hopefully scare the crap out of them this is good it's always good when you make kids cry that's. Incredible this is i mean i like pumpkins but like i often don't quite get over the line of like okay it makes sense to do the whole thing and put one out this. This makes it worth it man i wish i had known this this is such a great idea because where we're gonna go people go all out on setting up for their halloween but this would be next level nobody else would out of tech like this, that's top dad tier stuff right there. You should carve a pumpkin just because the doggo would probably love the pumpkin guts. It's true. Levi's favorite day is Carve Pumpkin Day, let me tell you. That's so funny. And think of the tech behind that, the tracking, the voice, all of it. Cutting edge. Right. The implementation, though, implementation, will they ever appreciate? All right. Let's play another one. You should make sure the pumpkin has a lecture about the back end and how it works so that they're forced to learn. So this is all working pretty well, right? So when you hit record, it's all in your local browser cache. That's why you can replay, delete, and submit again. And then once you do submit, it sends it up to an R2 storage. So we have a call. One more. full-stack developer. Take it away. Hi, Chris. Hi, Wes. Hello. I'm a listener from Morocco, and I am using Multica, which is kind of an agent manager platform, self-hosted on an LXC container on a small Lenovo mini PC at the back of my main PC. I'm using it to build some small games. So YouTube introduced this concept called YouTube Playables, which are like a small game that you can play inside the YouTube platform. Either on web and also on mobile. And yeah, I wanted to give it a shot. I've never done game development, but as we all heard that the recent updates from Cloud is really good at building 3D mobiles. So yeah, I'm using Cloud Code, of course, connected to an Elixir, in an Elixir container, basically, and Murtica has access to it and they've built an entire like squad with all the people. Members of the team, like I have a CTO, a deployer, a, senior kind of product, a senior developer, and also I have some teams that are doing the research and suggesting the ideas and then filtering the ideas. So for me, I just get on my inbox a list of ideas. I select them, they go into the design and the build of the story and everything, then I approve by setup, and at the end, I get a JavaScript 3D game, that you can play in the browser. I haven't submitted to YouTube yet, but hopefully soon. That's wild. See, I think the system's already paying off because that's so cool. That is. Thank you for sharing. And I can mark them now as played, so they're now registered in the back end, as played. Nice. How cool is that? And now everyone's in sync, right? I can check it. The agents can check it. Mm-hmm. Mm-hmm. Mm-hmm. And we have a little audit history here, which doesn't render quite right because i have the browser like is is super zoomed for the stream but we have like a little history that a human reviewed it that we got it played publicly so, it's all there it's all there wes it's it was i had to go through the valley of software development despair for this one for a bit. But in the end i think it was worth it your forehead only looks a little bruised yeah i think it was worth it and then there's a lot of tools we're going to have going forward and i i right now we only have, for the live stream what are you building and linux unplugged but i think really easily i could i could enable the launch and this week in bitcoin in the future as well totally maybe we transition launch voicemails over to this, maybe we'll see we'll see what you guys think let me know and of course let me know if you have any problems, How? I'm not so sure you should let me know because I'm not really online anywhere. You know, you could leave a voicemail. There you go. We'll catch it eventually, right? We'll catch it eventually. You can also, you know, find me on Matrix and I'll usually catch it. The thing that is impressive is the bulk of the technology is happening in browser. That's just it. Yep. There's a worker on the Cloudflare side. It serves the page and the JavaScript to take care of that. And like the recording your browser knows how to do, the file storage your browser knows how to do. I didn't have to write a recorder. There's a rich set of browser APIs that can do that stuff these days. It's cool. It's pretty cool. And then it just lives as like a little file in S3 compatible storage, which is one of the base primitives you have these days. There's a million things we're building. And in fact, the challenge has been keeping track of it all to talk about it. So ask us questions, you know, save those, send in voicemails, things like that. And we'll try to do more of these streams. So we can capture that stuff and talk about it more. Yeah, so stay tuned there, you know, meetup.com slash jupiterbroadcasting. Yeah, we'll try to announce them on there. You don't really have to use the Meetup page to watch it, but you can at least find out about it. We'll try to put it on the live stream calendar and give heads up where we can here and there. And then the plan is we'll release the full versions for our members and at least a highlight reel for the public to be able to catch, yeah, you know, the bits as they were. But we're thinking, like, the trick is to start doing these more regular while we're actually working on the thing. Maybe share some stuff while we're doing active development or stuff we just finished. Yep, exactly. All right, I think we're going to wrap up Clanker Therapy 2 right there. Leave us a voice note, ask us questions, tell us what you're working on.