00:00:00Okay, Multicore claims to be the tool that can turn your agents into real teammates,
00:00:05so Claude Code, OpenCode, Codex CLI, Hermes and more can be set up with their own system
00:00:11prompts and their own skills and be assigned tasks with status updates, they can alert you
00:00:16if they need your help, schedule recurring tasks, and you can talk directly to your agent.
00:00:21But is this open-source version of Claude routines and managed agents actually worth your time?
00:00:27Hit subscribe and let's find out.
00:00:32Now the intended way to use Multicore is to install it on your working machine, which ideally
00:00:37has a terminal coding agent like Claude Code or OpenCode, and then connect that to the
00:00:42Multicore cloud UI.
00:00:44But we're not going to do that, we're going to go the completely self-hosted route.
00:00:48So we'll install Multicore on a VPS, which I'll explain why later.
00:00:52In fact, I usually skip the whole setup stage, but for self-hosting with Multicore, there
00:00:58are a few things I had to figure out that weren't in the documentation.
00:01:01So we'll go through that first before running through some examples on how to use it.
00:01:05So I've already set up Multicore on a fresh Hetzner VPS by running this command, and that
00:01:10will use Docker to install Multicore.
00:01:12So make sure you have Docker installed on your VPS.
00:01:15And when you run everything, you just have three containers running the Multicore backend,
00:01:19which I believe is written in Go, the Multicore front end, which is TypeScript and Next.js,
00:01:24and the Postgres database that is used to store session information.
00:01:27You'd next need to run Multicore setup self-host.
00:01:30But I had a few issues with that.
00:01:31So if we run Multicore self-host, and if I were to reset my current configuration and
00:01:35my workspace, you'll see it's asking me to authenticate with this URL, which will take
00:01:39you to this screen.
00:01:40And if you add your email address and hit continue, you'll have to put in a resend code.
00:01:45Now I had a lot of trouble with this section.
00:01:48So I'd recommend you avoid the whole resend side of things altogether by going into the
00:01:53.multicore server directory, opening the env file, make sure the app environment is set
00:01:58to development, and also make sure the value for the recent API key is empty.
00:02:02This will make the code this value.
00:02:04Once you've done that, stay inside this directory and run this command to restart the containers
00:02:09with the updated environment variables file.
00:02:11And after you've done that, you should be able to log in with six eights.
00:02:15Now we're not quite done yet.
00:02:17From here, go to runtimes, and you can see that I have two different runtimes installed,
00:02:21but you should have nothing because that hasn't been set up.
00:02:24If you run Multicore Daemon Status, you can see right now mine is running and using these
00:02:28agents with one workspace, but yours should have an error.
00:02:32And that's because first on your VPS, you'll need to have a terminal coding tool installed.
00:02:36So I have Clawed Code and Open Code installed.
00:02:39And in order to connect that runtime to your Multicore instance, you'd have to go into settings,
00:02:44and API tokens, then create a new API token, then run Multicore login with the token flag
00:02:50and paste your token here.
00:02:52Then if you have a Multicore Daemon running, stop it before starting it again.
00:02:56The Daemon in Multicore checks for installed harness binaries, polls for tasks from Multicore
00:03:01to give to the agents and spawns multiple agents using work trees in order to get these tasks
00:03:07done.
00:03:08So once you've done that, the Daemon should now be showing your available runtimes.
00:03:11And the beauty of connecting it this way is that you can add multiple machines to your
00:03:15Multicore instance.
00:03:16So if you have multiple VPSs, you can install Multicore on all of them and connect them
00:03:20to a single UI using your different API tokens.
00:03:23Okay, with the setup out of the way, let's go through some simple tasks with Multicore.
00:03:28And I'm not going to go through the full potential.
00:03:30So having multiple agents with multiple projects and adding multiple tasks, I just want to show
00:03:35you individual features so you can picture how powerful Multicore is, if that's the way
00:03:39you'd like to work.
00:03:40Before you can do anything with Multicore, you'd have to create an agent.
00:03:43And I've already created one here called Medibot, but you can do one by clicking on this plus
00:03:48button and following the instructions.
00:03:50So this medical bot is similar or has the similar system prompt to the one I made in the Claude
00:03:56Managed Agents video that simply gets my medical information from a private GitHub repo, and
00:04:02I can talk to it via Slack.
00:04:04Now because I have a bit more freedom with Multicore in the sense that I have my own VPS
00:04:08and I can manage that directly, instead of getting this agent to clone that repo from
00:04:12GitHub, I've gone ahead and cloned it myself into this directory.
00:04:16Now as well as the system prompts, you can give your agent custom skills.
00:04:19Notice the agent will have access to skills you have installed on your CLI, but you can
00:04:24add skills directly in the UI if you want to here, which I have done as a test skill, but
00:04:29I'm not going to add it to the agent.
00:04:30There's also environments and also custom arguments.
00:04:33Since the agents uses the CLI tool, in this case, it's going to use open code run, I can
00:04:37add custom flags for if I want this agent to only use a specific model and so on.
00:04:42But by default, the agent will use the model you have in your CLI.
00:04:46So if I run open code right now, you can see it's using the big pickle model from OpenCodeZen.
00:04:50Now I can create a task or issue by clicking here, and I'm going to call this issue medical
00:04:54question with a prompt of can you check my medical information and let me know if I can
00:04:59eat calamari.
00:05:00Now if you've ever used any issue tracking tool, this will look very familiar.
00:05:04You can set priorities, assign people, add due dates, and so on.
00:05:08But I would highly recommend you always create the issue before you assign someone because
00:05:13the second you assign a bot to this issue, it gets started working on it right away.
00:05:17To make sure you're comfortable with everything you've written, double check.
00:05:21And once you're done, assign it to a bot.
00:05:23So I'll assign it to Medibot and create the issue.
00:05:26And from there, the bot will get started on it.
00:05:28I can keep track of it inside issues over here.
00:05:30And if we click on the issue, we can see Medibot is working straight away.
00:05:34Now while this is going, I'm going to click on autopilot.
00:05:36And this is the open source version of Claude Routines.
00:05:39We can click on start from scratch and we can select an agent and we can set how often we
00:05:44want this task to run.
00:05:45Now unlike Claude Routines, there's no option for API triggers or GitHub event triggers.
00:05:51Maybe that will come in the future.
00:05:53But I'm going to give this a similar prompt to the Claude routine video to fetch the latest
00:05:57issues of these three newsletters via RSS.
00:06:00And once you get these issues, find the best 10 articles that can be used in a YouTube video.
00:06:05This will happen daily at 9am London time.
00:06:08And ideally you'd want a research specific agent that is good at picking topics for YouTube.
00:06:14But for now we'll stick with Medibot and we'll hit create.
00:06:17Then we can click into this autopilot and click run now just to see it in action.
00:06:21It will create a new issue in todo.
00:06:23And we'll leave that to run for a few minutes and check back on our other issue, which has
00:06:28now been moved to in review by the agent.
00:06:30So over here, it says based on my medical records, I have a shellfish allergy, which is true and
00:06:35should not eat calamari and then gives more information here about my allergy.
00:06:40And we can also click here to see exactly what the agent did.
00:06:43So we can expand the execution history and see that it made a few bash tool calls.
00:06:48In fact, a lot of bash tool calls to look for the medical info directory and let it search
00:06:53the whole home directory before finding it and checking my medical info to give the agent
00:06:59the right information.
00:07:00Awesome.
00:07:01And from here, I can even reply, thanks for the information.
00:07:04Why have you put this in review instead of moving into done?
00:07:07So we'll leave that with the agent.
00:07:09And if you don't want to manually keep track of what the agent is saying, you can also get
00:07:12notifications from the agent.
00:07:14So here is the response from medical agent.
00:07:16And I've also got an update from our autopilot.
00:07:19Here's one that ran automatically an hour ago, but here's one that we just triggered and it's
00:07:22just finished.
00:07:23So we can see here that this is the prompt I gave it it's run through the prompt and it's
00:07:27giving me a response.
00:07:28So here are the top 10 picks with barn, temporal API, and so on.
00:07:33Now what's interesting here is that an agent will not move a task once it's in review back
00:07:37into in progress and to do you as a human could of course do that automatically.
00:07:41So I can move this into in progress or move that into blocked if I wanted to.
00:07:45But even though I asked the medical agent a question, it hasn't gone back to in progress
00:07:49while it's answering the question.
00:07:51It just stays in review and so I need to click on it to know when it's done and we can see
00:07:55why it moved it to in review since it's the standard workflow step instead of moving it
00:08:00to done.
00:08:01So it's waiting for me, the human, to move it to done, which kind of makes sense.
00:08:05From here I can continue talking to the agent, leaving reply, leaving comments, attaching
00:08:09files and emojis, or if I wanted to just ask a one-off question without going through the
00:08:14whole issue tracking process, I could click here and talk to my agent directly.
00:08:18Now to be honest, I'm not the biggest fan of communicating with agents by assigning
00:08:22tasks and watching them progress through a Kanban board.
00:08:25This is why I haven't tried out projects like Paperclip or Vibe Kanban.
00:08:29I don't really care about priorities or due dates, I tend to work on one or maybe two projects
00:08:34at a time with agents and I like to have more of a dialogue with my agents, actually seeing
00:08:39what they do, the tools they use and the problems they come across so I can help debug with them.
00:08:45But this is not to say I don't like the idea of Malteka, in fact I do like the scheduled
00:08:50tasks feature, I like the fact you can completely self-host it and also I think it's a very solid
00:08:55tool that is much cheaper if you use a different model than using some of the Claude managed
00:08:59agents or Claude routines.
00:09:02But I will say it's fairly technical in its setup process, you kind of have to know what
00:09:06you're doing, especially if you want to keep things secure and that is the benefit of the
00:09:11managed agents or routines which takes care of all these things for you by hosting things
00:09:16on topics infrastructure and the fact that you can use connectors to communicate with
00:09:20your agent does make things a bit easier because if you wanted to do the same thing in Malteka,
00:09:24okay you could use the responsive site on your phone but you'd have to manually put things
00:09:29together if you want to use Slack, Telegram or Discord.
00:09:33And this is why I went down the self-hosted route purely because of security, if something
00:09:37is connected to the internet then it's definitely hackable, I mean you could use Malteka completely
00:09:41locally so install it on your local machine and run the UI locally so it won't be connected
00:09:46to the internet but if you do want to connect it to the internet I recommend going down the
00:09:50self-hosted route using Tailscale so your server isn't completely exposed and making sure you're
00:09:55always up to date with the latest versions.