[00:11:01] then /bin/bash and you can start [00:11:01] interacting with it in the terminal. [00:11:03] Okay, cool. So we have this set up now [00:11:05] and like I was saying the first thing I [00:11:06] would suggest we do is actually change [00:11:08] the model that we're using or at least [00:11:10] configure the LLM so that we save a [00:11:13] bunch of money and we have the best [00:11:14] intelligence possible. Now Enthropic [00:11:16] does have the best models for open claw. [00:11:19] So for example the newest model that [00:11:20] just came out opus 4.6 six is the [00:11:23] current best model that we definitely [00:11:25] want to be using. However, we don't want [00:11:27] to use it all of the time because of the [00:11:29] rate limits. So, a lot of times it just [00:11:31] won't work because we've gone past our [00:11:33] rate limit, especially if you're on a [00:11:34] new account and it's very, very [00:11:37] expensive. So, the approach that I [00:11:38] recommend is that we run with Opus 4.6 [00:11:41] six for usually the starting tasks and [00:11:44] any high-level complex you know kind of [00:11:46] planning tasks and then we have that [00:11:48] delegate to a cheaper less intelligent [00:11:51] model that can handle everything else. [00:11:53] Now, in my case, what I've been doing is [00:11:55] I've been connecting this to my OpenAI [00:11:57] subscription or my Chat GPT subscription [00:12:00] because this allows me to use my usage [00:12:02] or kind of quota from chat GPT that I'm [00:12:05] already paying in my case $200 per month [00:12:07] for, but even if you're paying $20 per [00:12:09] month for it, you can still access all [00:12:11] of that usage. And OpenAI has made that, [00:12:13] you know, available to do and not [00:12:15] against their terms of service. So, what [00:12:17] I would suggest here is that you connect [00:12:19] this to another model that is cheaper. [00:12:21] In my case, I'm going to show you [00:12:22] connecting it to the codeex model, which [00:12:24] is still quite good and has almost [00:12:26] unlimited usage when you are paying like [00:12:28] I am $200 per month. However, if you're [00:12:31] not paying for that, then I would [00:12:32] suggest at least connecting this to just [00:12:34] a cheaper model. For example, the Kimmy [00:12:36] models are pretty good uh or anything [00:12:38] that's going to be just again cheaper [00:12:40] than Opus. Because if you run Opus every [00:12:42] single day and you're doing a lot, you [00:12:44] can spend 100, 200, 300, $500 per day. I [00:12:47] know someone, one of my friends was [00:12:49] spending about $200 per day running this [00:12:51] purely with Opus, which is insanity. So, [00:12:54] first things first, let's tell it the [00:12:55] following. We're going to say, okay, [00:12:56] switch to use Opus 4.6 by default. All [00:13:02] right, so it should automatically switch [00:13:04] its model then over to do that and we'll [00:13:06] verify that that's working. Okay, so it [00:13:08] said that it's switched over now and [00:13:09] just restarted the gateway. By the way, [00:13:11] the way that I'm seeing all of this [00:13:13] information on the side is I have this [00:13:14] little brain thing enabled. So, if you [00:13:16] want to disable that, it will just show [00:13:17] you what it did. If you want to see the [00:13:19] full logs, you can view it here. And [00:13:21] again, you can go to the logs to see [00:13:23] everything that's happening, which is [00:13:24] always pretty useful. So, I'm going to [00:13:26] go back to chat and I'm just going to [00:13:28] quickly tell it to disable the rest of [00:13:30] the fallback models because if you have [00:13:31] a look here, it shows the models that [00:13:34] it's using is enthropic, right? It shows [00:13:36] which ones has access to and then it [00:13:38] shows the fallbacks are these. So, I'm [00:13:40] just going to tell it remove these [00:13:44] fallbacks. Okay. And we'll leave chatgbt [00:13:47] 5.2, but remove the other two. So, [00:13:50] actually, we're going to do it like this [00:13:51] because I don't want it to accidentally [00:13:53] try to switch to one of these models [00:13:54] that doesn't exist. So, I'm going to hit [00:13:56] enter. Uh, and hopefully it will do [00:13:58] that. Okay. So, now I want to add [00:13:59] additional models. So, I'm going to say, [00:14:01] help me add the codeex model uh from my [00:14:06] open AI subscription. Same thing. Any [00:14:10] model you want to add, just tell it. It [00:14:11] can help you do that. And hopefully it [00:14:13] should run through the setup steps. It's [00:14:15] probably going to have me click a link [00:14:16] and then from that link, I will be able [00:14:18] to authorize and then kind of give it an [00:14:20] authentication token to add the model. [00:14:22] Now, once we have multiple models here, [00:14:24] what we're going to do is give it [00:14:25] instructions to switch between the [00:14:26] models based on what we wanted to do. [00:14:28] So, it says, what options do you want? [00:14:30] I'm going to say I need to connect via [00:14:34] OOTH to my OpenAI codeex plan. Give me [00:14:40] the link to do so. So, I know that [00:14:42] that's how we need to connect to it. So, [00:14:44] hopefully it should give me the link. [00:14:46] Uh, but I guess the way that I prompted [00:14:47] it before wasn't clear. So, anyways, [00:14:49] let's see what it does now. Okay. So, [00:14:50] you can see it's giving us a few options [00:14:51] here on how to connect this. And it [00:14:53] says, you know, option A is OpenAI API [00:14:56] key and option B is OpenAI codec [00:14:58] subscription. So, I'm going to say use [00:15:00] this and run the command. [00:15:03] Okay. And again, notice that I'm just [00:15:05] using the model directly to do this [00:15:07] rather than me going in the config and [00:15:09] modifying everything. And it's really a [00:15:10] matter of knowing what to ask for as [00:15:12] opposed to you having to manually go do [00:15:14] that. So, I'm just going to ask it. [00:15:15] Hopefully, it will run that command and [00:15:17] then we can connect our OpenAI model. [00:15:19] Okay. So, you can see it's given me this [00:15:20] URL. So, what I'm going to do is press [00:15:22] on that and then what I need to pass to [00:15:24] this afterwards is the localhost URL [00:15:26] redirect. So, I'm just going to sign in [00:15:28] and then give it that. Okay. So, I'm [00:15:29] going to press continue here and then [00:15:31] what's going to happen is it will [00:15:32] redirect me to this URL. So, let's give [00:15:34] it a second. I want to copy it and then [00:15:36] I'm just going to paste it in here and [00:15:38] hopefully it will configure that for me. [00:15:40] Again, if you want to do another model, [00:15:41] you just tell it the other model and it [00:15:42] will set it up. Now, while it's doing [00:15:44] this, what I want to do is I want to [00:15:46] tell this to actually write a command [00:15:49] for me that's going to allow me to [00:15:50] switch between the models and then have [00:15:53] it automatically do that as well. So, [00:15:54] I'm going to say make a command called [00:15:57] slash model that allows me to switch [00:16:03] between the opus [00:16:07] 4.6 and codeex I don't know 5.3 or [00:16:12] something I think is what it is. [00:16:14] Whatever the best one is. [00:16:17] Okay. So now we'll cue that up. So after [00:16:20] this is done we'll run that command. [00:16:21] Okay. So it looks like it created that [00:16:23] command. So now if I run the command [00:16:25] /model, we should be able to switch. So [00:16:27] let's go /model and then codeex and see [00:16:30] if that command is going to work. Uh and [00:16:32] it says model set to codeex 5.2. Okay, [00:16:35] perfect. Looks like that is indeed [00:16:36] working. All right, so now we have the [00:16:38] two models. Again, what I want to do is [00:16:40] just quickly give it some instructions [00:16:41] to always default to opus, but then [00:16:43] anytime we're doing some kind of coding [00:16:45] task or something that doesn't require a [00:16:47] lot of intelligence or complexity to [00:16:49] switch over to the codeex model to save [00:16:51] money. So, let me write up a prompt and [00:16:53] tell it that and it should save that in [00:16:55] its preferences and configuration. I [00:16:57] want you to always use the Opus 4.6 [00:17:00] model by default. But whenever an [00:17:02] instruction is provided to you, I want [00:17:04] you to determine whether or not you need [00:17:06] that level of intelligence or if you can [00:17:08] switch to a cheaper model like codeex [00:17:11] 5.2. Codec should always be used for [00:17:13] coding tasks and anything that is lower [00:17:15] leverage or doesn't require a ton of [00:17:18] detailed steps or thinking. So always [00:17:20] use Opus to come up with the plan to [00:17:22] start the process, but then delegate [00:17:25] lower level tasks using sub aents to the [00:17:27] codeex model to ensure that we're saving [00:17:29] money and cost. Whenever you run a task, [00:17:32] start by telling me what model you're [00:17:34] using for running it. So tell me, hey, [00:17:36] we did codeex 5.2 for this, we did opus [00:17:39] for this, etc. So that I know that it's [00:17:41] running correctly. Save this preference [00:17:43] for the future. So it looks like that's [00:17:45] working. And what this would have done [00:17:46] here is create a rule. So now I can go [00:17:48] reference that rule to understand all [00:17:50] right I need to do this I need to switch [00:17:51] between the models. So what I'm going to [00:17:53] tell this now is I want to [00:17:56] set up telegram [00:17:59] tell me how to connect it. Okay now [00:18:02] while it does that I'm just going to [00:18:03] open up telegram on my computer and I [00:18:05] will start running you through the [00:18:06] steps. Okay now it says that we can just [00:18:08] run this command to connect telegram and [00:18:10] it says that we need to paste the uh bot [00:18:13] token when prompted. So I'm going to say [00:18:15] run the command for me and I will send [00:18:19] the token. And the general steps is that [00:18:22] we need to open telegram and chat with [00:18:24] the at@botfather. Type newbot and then [00:18:27] copy the token. So it's very easy. What [00:18:29] we're going to do is open telegram. [00:18:30] We're going to go into the search here. [00:18:32] We're going to find bot father and make [00:18:34] sure you find the one that has the check [00:18:37] mark. Okay. Then from here we're going [00:18:39] to type start and we're going to go [00:18:40] slash newbot. [00:18:43] All right. When we do that, it's going [00:18:44] to ask us for a name. So, just call this [00:18:46] Tim A. All right. And let's go Tim A12 [00:18:49] 3456_bot. [00:18:51] Just make sure it ends in underscorebot. [00:18:53] It's then going to give you a token. [00:18:54] Copy the token. And of course, don't [00:18:56] give that to anyone else. And then we're [00:18:58] going to wait for this to finish. And we [00:19:00] are going to send it the token so that [00:19:02] it is able to um what what do you call [00:19:04] it? Actually trigger this. Okay. So, [00:19:05] this is the token. We're going to paste [00:19:07] that here. Now, while that sets it up, [00:19:10] we are also just going to press this [00:19:12] link right here, which will bring us to [00:19:13] chat with our bot. So, we want to chat [00:19:16] with the bot that we just created. From [00:19:17] here, we're going to press on start. And [00:19:20] as soon as it's connected, we should get [00:19:22] some kind of message here saying, "Hey, [00:19:24] like we need to pair this or add some [00:19:26] setting." So, wait for the bot to [00:19:27] finish. And then what you can do is just [00:19:29] type any message here again. And it [00:19:31] should tell you something like, "Hey, [00:19:32] it's not paired. It's not connected." [00:19:33] And then we can run the pairing command. [00:19:35] All right. So, this works and I just [00:19:36] typed hi and you can see that it now [00:19:38] gives me this. So, I'm just going to [00:19:39] copy this code here and I'm going to say [00:19:41] I got this, you know, pair it whatever [00:19:45] and just paste the information in and [00:19:47] hopefully we'll be able to run the [00:19:48] pairing command and then we'll be [00:19:49] connected with Telegram. All right, so [00:19:51] it said the pairing was approved. What [00:19:52] I'm going to do now is just take type hi [00:19:55] and see if we get a response from the [00:19:56] bot and then from this point forward [00:19:58] we're able just directly to use [00:19:59] telegram. Okay, so it says we're using [00:20:00] Opus 4.6. Hey, Telegram is connected. [00:20:03] What do you want me to do next? Perfect. [00:20:05] So that is exactly what I was looking [00:20:06] for. So now rather than me having to [00:20:09] type out all of the prompts, I do want [00:20:11] the ability to actually just speak them. [00:20:13] So I'm going to tell it enable speech to [00:20:17] text so you can transcribe my audio [00:20:21] messages. Because by default, if I send [00:20:23] this an audio message, it's not going to [00:20:25] understand it. So I'm just going to tell [00:20:26] it, hey, you know, add that tool, add [00:20:28] that skill, and set yourself up. Now [00:20:30] while it does that I will just quickly [00:20:32] mention right that the thing that makes [00:20:34] this bot useful is skills. So if you [00:20:37] press on skills here in the uh what do [00:20:39] you call it claw dashboard or you know [00:20:41] gateway dashboard whatever you want to [00:20:43] call it you'll see there's this long [00:20:44] list of default kind of built-in skills [00:20:47] that you can install and configure. Now [00:20:49] skills usually contain some kind of [00:20:51] underlying software as well as a [00:20:53] markdown file that explains to the model [00:20:56] in this case open claw how to actually [00:20:58] use the skill. So go through here have a [00:21:01] look at some skills that are useful to [00:21:03] yourself and you can disable them or you [00:21:05] can install them. Sometimes again you [00:21:06] need some command, right? And I'll show [00:21:08] you installing some of them in a second. [00:21:10] But when we tell this, hey, we want to [00:21:12] be able to speak to you. What we're [00:21:14] effectively telling it to do is create a [00:21:16] new skill that will allow it to [00:21:18] transcribe audio messages. So, I'm going [00:21:20] to go here and it says we can enable [00:21:21] audio transcription, but you need to [00:21:23] pick a transcription provider. The [00:21:25] config schema supports [00:21:26] tools.mmedia.audio [00:21:28] uh deepgram openai. I'm going to say use [00:21:31] whatever the default is [00:21:35] that doesn't [00:21:37] okay say doesn't require a new key. [00:21:42] Perfect. And then that should enable [00:21:43] voice mode for us. Okay. So you can see [00:21:46] even though it was kind of lying to us [00:21:47] before and saying hey you know I need to [00:21:48] provide open AAI key whatever I just [00:21:50] told it no you don't need that because I [00:21:51] know it can do it by default and it said [00:21:53] we can now send an audio message. So [00:21:55] let's test this. Hey so I'm just sending [00:21:56] an audio message. Can you tell me what [00:21:58] this audio message says? Make sure that [00:22:00] you can transcribe it correctly and that [00:22:02] you can understand my accent. Just give [00:22:04] me back exactly what I said in the audio [00:22:06] message. [00:22:08] Okay. Perfect. and it should be able to [00:22:10] understand this now and transcribe it. [00:22:12] Let's see if that works. All right, so [00:22:14] this is being a little bit annoying [00:22:15] here. Let's just bring it back. And it's [00:22:16] telling me, hey, there's no model even [00:22:18] though it said it used the model and it [00:22:20] set it up. So I'm just going to tell it [00:22:21] install whisper locally to convert [00:22:23] speech to text. That should set up for [00:22:25] us and get it working. Again, I'm [00:22:27] showing you the process. This is what [00:22:28] happens when you're working with [00:22:29] OpenClaw. Sometimes stuff breaks and you [00:22:32] have to do a bit of problem solving. [00:22:33] Okay, so it said that it's installed [00:22:34] this now and it's just asking me if I [00:22:36] want better accuracy or for it to be [00:22:38] faster. So I'm just going to type bass [00:22:41] and I hope this is going to work. Hey, [00:22:42] I'm doing a test. I want to see if you [00:22:44] can transcribe this audio message. If [00:22:46] so, tell me exactly what it said. Okay, [00:22:48] and let's see what we get. Okay, so it [00:22:49] looks like the audio message I was [00:22:50] sending was blank because I was sending [00:22:53] it from my computer and I guess my mic [00:22:54] is already being used by OBS to record. [00:22:56] So I just sent one from my phone and [00:22:58] hopefully it's going to work now. Let's [00:23:00] see. Awesome. And finally, it looks like [00:23:02] it's working. We have voice mode [00:23:03] enabled. I can now send audio messages [00:23:05] for it to transcribe. All right. So, now [00:23:08] that Telegram is configured, what I want [00:23:10] to do is I want to start setting up some [00:23:12] different Telegram channels that we can [00:23:14] chat inside of that are going to allow [00:23:16] us to kind of segregate different things [00:23:18] that we're talking about. So, for [00:23:19] example, if I have the bot running as [00:23:21] like a virtual assistant, but then I [00:23:22] also have it running like an accounting [00:23:24] task or doing programming, I probably [00:23:26] don't want all of my messages in one [00:23:28] channel because that's going to be [00:23:30] pretty difficult to organize and to view [00:23:32] the history of. So, what we can do is we [00:23:34] can make a new group here in Telegram. [00:23:36] So, what I can do is go here, go new [00:23:39] group. I can call this, you know, [00:23:41] startup ideas or whatever the thing is [00:23:42] that I want to chat about with the bot. [00:23:44] So, let's go startup ideas, not [00:23:46] channels. And then let's add the bot by [00:23:49] just typing in their username. Okay. And [00:23:52] go ahead and press on create. So now [00:23:54] what I can do is I can start chatting [00:23:56] with the bot. But in order for this to [00:23:57] work, I do need to manage the group and [00:23:59] I need to give the bot permissions. So [00:24:01] I'm just going to right click on the bot [00:24:02] here and I'm going to go promote to [00:24:04] admin. And when I promote them to admin, [00:24:06] I am going to just make sure they have [00:24:08] the correct permissions and go save. And [00:24:11] now what I can do, wait one second. And [00:24:13] let me just look at this cuz it says it [00:24:15] has no access or has access to messages. [00:24:17] Okay, good. I'm going to just tag the [00:24:18] bot. So say at Tim Aello. [00:24:22] Okay. And hopefully it's going to read [00:24:24] something. So it reacted to that showing [00:24:25] us that it saw it. So that's a good [00:24:27] sign. Says, "Hey Tim, what's up?" [00:24:29] Perfect. So now I can chat with the bot [00:24:31] directly inside of this channel. And all [00:24:33] I need to do is give the bot [00:24:34] instructions to remember that it should [00:24:36] only talk about these ideas in this [00:24:39] particular channel. So, what I'm going [00:24:41] to do is I'm just going to do a voice [00:24:42] transcription here and tell you kind of [00:24:44] how I would instruct this. Hey, so I'm [00:24:47] going to start adding you to some group [00:24:49] chats where it's just you and me. The [00:24:51] name of the group chat or the name of [00:24:52] the group channel is the topic that I [00:24:55] want to discuss in that channel. Don't [00:24:57] talk about anything else and only reply [00:25:00] or send me messages in the appropriate [00:25:02] channels based on the name of them. If I [00:25:04] DM you directly, we can talk about [00:25:06] anything. But if I DM in a channel like [00:25:08] you know startup ideas or something we [00:25:10] only talk about startup ideas again [00:25:12] whatever the title of that uh what do [00:25:15] you call it channel is. Now I also want [00:25:17] you to reply to any message. So don't [00:25:19] just reply if I ping you reply to [00:25:21] anything in those channels. Make this a [00:25:24] rule and ensure that you remember this [00:25:25] going forward in the future. Uh you also [00:25:27] should be able to create groups with me. [00:25:29] I'll give you the permission to do that. [00:25:31] So, if we have a new thing to talk [00:25:32] about, make a new group with me and [00:25:34] start chatting with me there. I don't [00:25:36] know if that last part's going to work [00:25:37] because I actually haven't tried that [00:25:39] before, but I'm just going to send that [00:25:40] over to the bot. And I will go and [00:25:43] configure the bot further to hopefully [00:25:45] allow it to create new groups. Okay, so [00:25:47] we're replying to that. Now, I don't [00:25:48] know if this is actually going to be [00:25:49] able to create new groups cuz I don't [00:25:50] know if there's another setting we need [00:25:51] for that, but I'm going to say create a [00:25:53] new group called [00:25:56] accounting. And let's see if it's able [00:25:58] to do that. Okay, so it looks like it [00:26:00] can't make the uh groups for us. There's [00:26:01] probably a way that I can enable that, [00:26:02] but for now, we'll just leave it. [00:26:04] Anyways, point is we can make different [00:26:06] groups, right? We can pin those groups [00:26:07] and then we can just have kind of a more [00:26:09] organized way of chatting with the bot. [00:26:11] Now, I did try to send something in the [00:26:12] group and I did still need to ping the [00:26:14] bot. So, again, there's probably a way [00:26:16] to configure that, but for now, that's [00:26:17] fine. We can just ping the bot if we [00:26:19] wanted to reply. And actually, in the [00:26:20] future, we could add multiple of our [00:26:21] bots in the same group. That could be [00:26:23] interesting to see how that would go. [00:26:25] Okay, anyways, let's go back here and [00:26:27] let's now start talking about skills. [00:26:30] So, skills allow the bot to have some [00:26:33] capabilities that it can complete, [00:26:35] right? Or that it can do. Now, by [00:26:37] default, there's some skills that are [00:26:38] already added. And if we go to the uh [00:26:41] what do you call it? Gateway dashboard. [00:26:43] And you go to skills and you expand [00:26:45] this, you'll see there's a bunch of [00:26:46] default skills that are already [00:26:47] installed that you just need to enable [00:26:50] or add the dependencies for. For [00:26:52] example, voice calling, right? getting [00:26:54] the weather, playing a Spotify song, you [00:26:56] know, creating a skill is a skill that [00:26:58] exists, all of this kind of stuff. So, I [00:27:00] would suggest reading through here and [00:27:01] enabling any of the ones that you want [00:27:03] for sure, but I also would suggest [00:27:05] having a look at this place called [00:27:07] Clawhub. Now, Claw Hub has a list of [00:27:10] pre-built skills that you can use and [00:27:12] just build into your bot. However, [00:27:14] before you start just going and adding [00:27:16] all of these random skills, I would [00:27:18] suggest that you understand what a skill [00:27:20] is. And uh we're going to talk about [00:27:22] that now. So, a skill is effectively [00:27:25] just a markdown file. Now, I'm going to [00:27:27] show you that if I open up any one of [00:27:29] these skills, you'll see that the skill [00:27:31] is just in this skill.md file. MD stands [00:27:34] for markdown. And all the skill is is [00:27:37] just a bunch of formatted text that [00:27:39] explains what the bot should be able to [00:27:42] do. Now, the skill can also reference [00:27:44] files. So, you can see in this case, it [00:27:46] has like a scripts/stats.py [00:27:48] file, which is a Python file that it can [00:27:50] run to complete something. So that's all [00:27:53] a skill is. You can tell the bot to add [00:27:56] its own skill and it can just write it, [00:27:58] configure it, add it itself, or you can [00:28:00] bring in pre-built skills from a place [00:28:02] like Clawub. Again, I don't suggest just [00:28:04] randomly bringing them in. But I want to [00:28:06] show you how you can view all of the [00:28:08] skills that your bot has and start [00:28:09] actually viewing all of the different [00:28:11] files that essentially enable the bot to [00:28:14] do something. So to do that, you need to [00:28:16] open up some kind of code editor. Now, I [00:28:19] suggest that you open up cursor. You can [00:28:21] also open up Visual Studio Code or VS [00:28:23] Code. You can download it for free on [00:28:25] the internet. Just search VS Code or [00:28:26] cursor download. Okay. So, from here, [00:28:29] what we're going to do is hit control [00:28:30] shiftp or commandshiftp on our keyboard [00:28:33] and we're going to go add new SSH host. [00:28:36] This is how you open the command pallet [00:28:37] in VS Code or cursor. From here, we're [00:28:40] going to say SSH root at and then we're [00:28:43] just going to copy whatever we had here. [00:28:45] So, actually, we just copy this command. [00:28:46] And again, make sure we know what the [00:28:48] password is and hit enter. We can just [00:28:51] use the default SSH config. Then we're [00:28:54] going to go control shiftp again or [00:28:56] command shiftp and then connect to host [00:28:58] and we're just going to choose the host [00:29:00] that we added recently. Okay. Now once [00:29:02] we press that, it's going to open up a [00:29:03] new window. We're going to select our [00:29:05] operating system as Linux and we're [00:29:07] going to paste in our root password and [00:29:09] hit enter. From there, it should open up [00:29:12] a remote kind of terminal and you're now [00:29:15] inside of the server. So, what we can do [00:29:18] is we can actually go open folder and we [00:29:20] can find the folder that contains all of [00:29:23] the data for open claw. So, in order to [00:29:25] find this folder, we're going to go to [00:29:27] docker. We're going to go to openclaw [00:29:29] data and then openclaw like that. And [00:29:33] you can see there's a bunch of stuff [00:29:34] here. So, we're going to go ahead and [00:29:35] press on open. And then in the lefth [00:29:37] hand sidebar, let me just close my [00:29:40] agent. Uh, okay, it's asking me for the [00:29:42] password again. So that's fine. Let's [00:29:43] type the password. We should be able to [00:29:45] see this data. So you'll notice here if [00:29:47] you open up the sidebar to view the [00:29:49] files, right, you can do that with [00:29:50] controlB or commandB on your keyboard [00:29:53] that you'll see a bunch of information [00:29:55] showing up. Okay, so we have [00:29:56] credentials, we have cron, and then if [00:29:58] you go into workspace, we have all of [00:30:00] these different files, which is really [00:30:01] the configuration for the agent. Now, [00:30:04] right now, we don't see any skills in [00:30:06] here. The reason for that is that a lot [00:30:07] of the built-in skills are actually [00:30:09] stored in a different location because [00:30:10] they're already written. But if you were [00:30:12] to ask the bot to make its own skill, it [00:30:14] should show up here. So, let's actually [00:30:15] test that. Make a simple skill that says [00:30:20] hello world in five languages. And let's [00:30:24] just go five random languages. Okay. And [00:30:27] let's see actually if it can create [00:30:28] that. And then we're going to have to [00:30:30] refresh this and we'll be able to view [00:30:31] hopefully the new skill file. so I can [00:30:33] show you what it looks like before we [00:30:35] start enabling other ones. Okay, so it's [00:30:36] making the skill right now and you can [00:30:38] actually see that it's now created a new [00:30:39] folder called skills and then it has [00:30:41] hello world languages as a subfolder [00:30:43] which is the name of the skill and then [00:30:45] we have this skill.md [00:30:48] file that explains what the skill is [00:30:50] right name description and then all of [00:30:53] this. Now you'll notice that after I do [00:30:56] that I now will have a command and this [00:30:59] command should be hello world languages [00:31:01] uh or sorry /skill. So I can do /skill [00:31:04] and then I can do hello-world-languages [00:31:09] and it should trigger that skill to [00:31:11] execute. And you can see that it now [00:31:13] runs the skill. Right? So that's [00:31:15] effectively what a skill is. I just want [00:31:16] you to understand that before we start [00:31:18] adding a bunch of them. And now that we [00:31:20] can make our own custom skills, which is [00:31:22] very easy, right? You just ask it to do [00:31:23] something which is a repeatable task [00:31:25] that you want it to have written down. [00:31:27] Make sure you review what it writes [00:31:28] inside of here and customize it because [00:31:30] that's going to give you the best [00:31:31] results. Now, some skills that we [00:31:33] definitely want to enable that are uh [00:31:35] default skills are going to be the [00:31:37] following, and they have to do with Git [00:31:39] and GitHub. So, a lot of times you can [00:31:42] have your agent actually code its own [00:31:44] skills. So, it can write its own custom [00:31:45] Python files or scripts or whatever [00:31:48] websites. Uh, and that's quite useful. [00:31:50] So, what you're going to want to do [00:31:51] right away when setting up this agent is [00:31:53] first enable the coding agent. So, what [00:31:56] you can just simply do is you can copy [00:31:58] this and just tell the agent [00:32:01] enable this skill. Okay, so I'm just [00:32:03] going to say enable this skill and just [00:32:05] copy it and it's going to go and install [00:32:07] and configure it as needed. You're also [00:32:09] going to want to enable GitHub. And in [00:32:11] order to enable GitHub, I highly suggest [00:32:13] that you create your own GitHub account [00:32:15] specifically for the bot. So, I've [00:32:18] already done this. I've gone to [00:32:19] github.com. I've made my own bot or my [00:32:21] own GitHub account called Techwithim [00:32:22] Claudebot. And what we'll do is we'll [00:32:25] connect this GitHub account, so not our [00:32:26] GitHub account, a separate GitHub [00:32:28] account to the bot and then allow it to [00:32:30] write all of its code. Now, notice that [00:32:32] I actually have some code here already. [00:32:34] And the reason for this is I've [00:32:36] instructed my Clawbot on a different [00:32:38] instance for anytime it writes any code [00:32:40] to commit the code to GitHub, [00:32:42] automatically create a new git repo, and [00:32:44] store all of the code so that I always [00:32:46] have access to it. I can manage it, I [00:32:48] can make changes, I can pull it down. [00:32:50] You get the idea. Okay, so we have like [00:32:52] you know a YouTube OS dashboard whatever [00:32:54] all of this stuff and you can see any of [00:32:56] the code that's been written. So anyways [00:32:58] let's go back to Telegram and you can [00:32:59] see it says the coding agent skill is [00:33:00] already present by missing the [00:33:02] requirements. I'm going to say use [00:33:04] codeex. Okay, and hopefully it's going [00:33:07] to set that up. Okay, so it looks like [00:33:08] codeex was installed. So if we go back [00:33:10] here now we should be able to see that [00:33:12] the coding agent we might just have to [00:33:14] refresh here hopefully is no longer [00:33:17] being blocked. So let's go here and you [00:33:19] can see coding agent is good. We can [00:33:21] also see we have workspace skills. And [00:33:22] these are ones that it created itself. [00:33:25] Cool. So the other one that we want is [00:33:26] GitHub. So I'm just going to press the [00:33:28] button to install the GitHub CLI here. [00:33:30] And then what I'm going to do is go down [00:33:33] to uh what is it? My agent and tell it [00:33:35] to configure GitHub and you know tell me [00:33:37] what I need to do to essentially have my [00:33:39] GitHub account signed in. So I'm going [00:33:41] to say configure git/github [00:33:45] and tell me how to connect my account. [00:33:48] Okay. So it's given me a few steps here. [00:33:50] It says I need to set my Git identity [00:33:52] and then authenticate with the GitHub [00:33:54] CLI. So I'm going to tell it my name as [00:33:56] well as my email and then to [00:33:58] authenticate for me. Okay, cool. So what [00:33:59] I'm going to do is just go to this link [00:34:01] that it's giving me and then type in [00:34:03] this code. So let's do that and see if [00:34:06] we can authenticate. Okay, so I just did [00:34:08] that. So I just told it, hey, I did [00:34:09] that. You know, maybe it's going to test [00:34:10] this now and let's see if GitHub is [00:34:12] working. And then again we can give this [00:34:14] some instructions to save to always [00:34:16] write and save any code um you know to [00:34:19] GitHub effectively. All right so looks [00:34:21] like GitHub is configured. Now the next [00:34:23] thing that I want to do is go over [00:34:25] memory and preferences just so you [00:34:27] understand kind of how this works in uh [00:34:29] what do you call it open claw. So [00:34:31] something you need to understand is that [00:34:32] anytime open claw spins up again and you [00:34:35] have a new session it effectively [00:34:36] forgets whatever you were talking about [00:34:38] before. Now the only way for it to [00:34:41] remember something and to keep improving [00:34:43] is for it to actually modify the files [00:34:45] that it has in its file system and you [00:34:47] can think of the files like its memory. [00:34:50] Now there are multiple files you're [00:34:52] going to see here related specifically [00:34:53] to memory. So first is memory MD. Now [00:34:57] this is persistent long-term memory that [00:35:00] it will always read before it's doing [00:35:02] some kind of action. So if there's [00:35:04] something that you always want it to [00:35:05] remember, you put it inside of this file [00:35:07] right here, or you tell the model to put [00:35:09] it there. The other memory is daily [00:35:12] memory, which is set up by default. And [00:35:13] if you go here into the workspace, [00:35:15] you'll see that it has memories for each [00:35:17] day. Okay, so it explains what's [00:35:20] happening, what's going on in that day, [00:35:21] what it needs to do, blah blah blah. [00:35:23] Now, by default, Open Claw, I believe, [00:35:25] is only going to read two days of [00:35:27] previous memory. So if you tell it to do [00:35:29] something, you know, yeah, like one week [00:35:31] ago, it's not going to remember that [00:35:32] unless it's in the persistent memory. So [00:35:35] I'm quickly going to show you two [00:35:37] settings that you can enable that will [00:35:38] allow OpenClaw to have longer memory and [00:35:41] to save things better. Now what they [00:35:44] are, I'm just going to copy them in [00:35:45] here. Okay, so I'm just pasting them, [00:35:46] but essentially they are the following. [00:35:48] It is compaction.mmemory flush.enabled [00:35:51] memory search.experimental session [00:35:53] memory to true. Now I'm going to say [00:35:55] enable these. [00:35:57] Okay. [00:35:59] And explain what they do. So, I found [00:36:03] that when I enable these two settings, I [00:36:05] get a better result in terms of the [00:36:06] memory. We're just going to wait for [00:36:07] Open Claw to explain it because it will [00:36:09] give us a better explanation probably [00:36:10] than what I can come off come up with at [00:36:12] the top of my head. But you can see it's [00:36:14] enabled them and it says when the [00:36:16] conversation gets too long, OpenClaw [00:36:17] will trigger a memory flush prompt. So, [00:36:19] important context gets written to memory [00:36:20] files before compaction drops history. [00:36:23] And then this one lets memory search [00:36:24] include recent session transcripts, not [00:36:27] just files in memory, improving recall [00:36:29] of what just happened. Okay, so that [00:36:32] explains what it's doing, but [00:36:33] effectively what would happen is if [00:36:34] you're talking for a really long time [00:36:36] with OpenClaw, it's automatically going [00:36:38] to compact what you were talking about. [00:36:40] Now, before we have it compact that, we [00:36:42] wanted to save that into the memory so [00:36:44] that we don't lose any of that [00:36:45] information. So that's what it's doing. [00:36:47] And then same thing with the session [00:36:48] memory. Rather than just reading the [00:36:51] information that's in the memory files, [00:36:53] we want it to read what was recently in [00:36:56] session, right? So what we talked about [00:36:58] that maybe wasn't automat. Okay, so [00:36:59] hopefully that makes a little bit of [00:37:00] sense. Now, another thing that we're [00:37:02] going to do, and I'm just pulling this [00:37:03] up from the OpenCloud docs to make the [00:37:05] memory even better, cuz this is really [00:37:07] the crux of how this gets good, is we're [00:37:09] going to enable vector memory search [00:37:11] using a QMD backend, which is [00:37:13] significantly better at searching [00:37:15] through the memory than the default [00:37:16] backend service. You don't really have [00:37:18] to understand this, but effectively in [00:37:20] the background, OpenClaw will search [00:37:22] through the memory files using some type [00:37:24] of vectorzed search. Now, we can change [00:37:27] how we're doing that search so that it's [00:37:29] just going to be a lot more effective [00:37:30] and give us better results. So, what I'm [00:37:32] going to do is I'm just going to copy [00:37:34] all of this content from the docs. I'll [00:37:35] leave this link in the description. If I [00:37:37] forget, someone leave a comment and I [00:37:39] will add it. And I'm going to say enable [00:37:41] this. Okay. And just tell it to enable [00:37:43] it. And it should go through the [00:37:44] prerequisites here and install this for [00:37:46] us. So, I'm going to tell yes, install [00:37:47] the prerequisites. Okay. So, it looks [00:37:49] like QMD was added now. So, our memory [00:37:51] should be a little bit more optimized, [00:37:52] just working better in the long term. [00:37:54] Now, I'm going to go through a bunch of [00:37:55] other things that we can set up and [00:37:57] configure, but keep in mind that, you [00:37:58] know, Open Claw is for you, right? You [00:38:00] guys customize it. And what I'm trying [00:38:02] to do is give you a solid base that you [00:38:04] can then extend. So, while it's not [00:38:06] super detailed in terms of every little [00:38:08] individual skill we add, the idea is I [00:38:10] want you to understand what these things [00:38:12] are so you know what's going on in the [00:38:13] back end when you do make changes by [00:38:15] yourself. So, now I want to talk a [00:38:17] little bit about some of the other files [00:38:18] that are here. And specifically I want [00:38:20] to talk about this identity file as well [00:38:23] as this user file. Now the user file is [00:38:26] the information about you okay or in [00:38:28] this case about your human because it's [00:38:30] like in reference to the clawbot and the [00:38:33] identity file is the information about [00:38:34] the clawbot itself. So rather than you [00:38:37] just filling this file in manual [00:38:38] yourself, what I would suggest you do is [00:38:40] actually go to open claw and ask it to [00:38:43] give you an interview and ask you [00:38:44] questions on what you want. So, I'm [00:38:46] going to give you an example prompt that [00:38:47] you could pass so it can modify these [00:38:49] files. Say, "Hey, I need you to update [00:38:52] the identity file as well as the user.md [00:38:55] file with important long-term [00:38:56] information. Ask me a bunch of [00:38:58] questions. Give me an interview. Give me [00:39:00] a quiz on all of the data you need from [00:39:02] me in order to create those files and [00:39:04] optimize them as much as possible. In [00:39:06] the future, if something changes, [00:39:08] continue to update these files and ask [00:39:10] me more information as we chat through [00:39:13] this conversation and just in general in [00:39:15] the future so that you always have the [00:39:16] most recent up-to-date data and you're [00:39:18] constantly updating these files. That's [00:39:20] maybe a little bit overkill, but point [00:39:22] is, you know, you can just say, "Hey, [00:39:23] give me an interview to update these [00:39:24] files." And that's a lot easier way to [00:39:26] go about doing it than you having to [00:39:28] manually kind of work through and, you [00:39:30] know, fill in all of this data. Okay, so [00:39:32] you can see it's giving me a bunch of [00:39:34] stuff, right? I'm not going to actually [00:39:35] go and fill this in uh because I don't [00:39:37] care too much about it. I'll just give [00:39:39] it a quick answer so we can see the [00:39:40] update. Say, "My name is Tim. You can [00:39:43] call me Master Tim. My pronouns are the [00:39:46] normal ones, he, him. Uh my time zone is [00:39:50] Asia, Dubai. I usually work from 10:00 [00:39:52] a.m. to 1:00 in the morning. My goal is [00:39:55] to grow my YouTube channel." Okay, [00:39:57] whatever. Right. And then go ahead and [00:39:59] hit enter. And hopefully it is going to [00:40:02] update the file now. And again, if you [00:40:04] want to see the updates, you can [00:40:05] refresh. Um, what is it? This. And it [00:40:08] should show the new version of the file, [00:40:11] assuming that it updates it. Okay. So, [00:40:12] you can see it's updated the file now [00:40:14] and it kind of has that information. [00:40:15] Then for the identity, we're not really [00:40:17] getting like the correct stuff. Um, but [00:40:19] you you get the idea. Okay. So, we [00:40:21] could, you know, adjust that later in [00:40:22] the future. Okay. So, that kind of [00:40:23] covers that. Now, the other files that [00:40:25] are useful is going to be the soul as [00:40:28] well as tools and heartbeat. So the soul [00:40:31] is kind of some more instructions in [00:40:33] terms of how the bot should operate, the [00:40:36] way it should talk to you, you know, [00:40:37] core truths, things that it believes, [00:40:39] right? Like at the soul of the agent, [00:40:41] kind of at the heart of it, I guess you [00:40:42] could say. So if you want to modify [00:40:44] this, you can, but generally the default [00:40:46] one is pretty good. And it says, you [00:40:47] know, each session you wake up fresh. [00:40:49] These files are your memory. Read them, [00:40:51] update them, etc. And then it goes [00:40:53] through boundaries, you know, private [00:40:54] things stay private. Here's your vibe, [00:40:56] all of that kind of stuff. So you can [00:40:57] adjust the soul based on what you want. [00:40:59] If you want something rude, if you want [00:41:00] something happy, if you want something [00:41:01] funny, you know, that's where you would [00:41:03] put it inside of here. Now, we also have [00:41:05] tools. Tools are different things that [00:41:07] can be used by things like skills. So, [00:41:09] for example, you have an SSH host, a [00:41:11] preferred, you know, voice, speaker, [00:41:12] rooms names, device nicknames, all that [00:41:14] kind of stuff. It can put that directly [00:41:16] inside of this file. I don't really use [00:41:18] tools too much, but you know, you can [00:41:20] modify this file if needed. Awesome. And [00:41:22] then the last one is going to be the [00:41:24] heartbeat file. Now, the heartbeat file [00:41:26] is super interesting because what you [00:41:28] can do is you can have the Claudebot [00:41:30] triggered to wake up effectively every [00:41:33] set number of minutes. You can have it [00:41:34] every 5 minutes, every 30 minutes, every [00:41:36] hour. And when it wakes up, what it's [00:41:38] going to do is it's going to read this [00:41:39] heartbeat file. Now, inside of this [00:41:42] file, you can direct it to do something [00:41:44] continuously. So, something that's [00:41:46] common to do is to continually improve [00:41:48] itself. So what we can do is we can say [00:41:51] update your heartbeat file such that [00:41:52] anytime you wake up you review any of [00:41:54] the mistakes that you've made previously [00:41:56] and start making improvements and fixing [00:41:58] those mistakes. When you do this make [00:42:00] sure you run multiple sub aents and [00:42:02] paralyze the tasks so we can do multiple [00:42:05] things at the same time. Okay. So I [00:42:07] actually just introduced another concept [00:42:09] to you as well here called sub aents. So [00:42:11] when you're running this clawbot, you [00:42:14] know, right now we're in this kind of [00:42:15] one session where I'm asking it to do [00:42:17] something, waiting for the response. You [00:42:19] can do that, right? Or you can actually [00:42:21] tell it to run multiple sub aents. And [00:42:24] when it runs sub agents, what that will [00:42:26] do is it will run a background agent, [00:42:28] which is another instance of in this [00:42:30] case opus or codeex or whatever that's [00:42:33] going to go and achieve some kind of [00:42:34] task. So I can say, hey, spin up 10 sub [00:42:37] aents and go work on different parts of [00:42:38] this task al together and then [00:42:40] collaborate once you're finished. And it [00:42:42] will just automatically make these [00:42:43] different sub aents and you can see them [00:42:46] inside of your clawed gateway. So if you [00:42:48] go to sessions, for example, you'll be [00:42:49] able to see the different sessions that [00:42:50] are running as well as the different uh [00:42:53] what do you call it? Sub aents that are [00:42:55] being triggered by those. Okay, so [00:42:57] there's a bunch of stuff. You can [00:42:58] effectively just see everything that's [00:42:59] going on inside of the gateway. Uh but [00:43:01] that is what you should be aware of. [00:43:04] Okay. Now you can see inside of the [00:43:05] heartbeat file it says on every [00:43:06] heartbeat review recent mistakes issues [00:43:08] and proposed fixes when doing this [00:43:10] review spawn multiple sub aents and run [00:43:12] the tasks in parallel. Right? So now [00:43:13] anytime it wakes up and has a heartbeat [00:43:15] it will do this. Heartbeats are not [00:43:18] going to do like super long running [00:43:20] operations. Typically it's usually for [00:43:23] kind of short repetitive things that you [00:43:25] want to do all of the time. For example, [00:43:27] check my email on every heartbeat. [00:43:28] Right? That's something that makes sense [00:43:30] to put inside of here. Okay. So, let's [00:43:32] go back. And one thing to note is that [00:43:34] if you go to the config here, I believe [00:43:37] it's in the configuration. It might not [00:43:39] be directly here. Uh, okay. Regardless, [00:43:42] we'll get out of this. You can tell it [00:43:44] how frequently you want the heart to [00:43:46] beat. So, I'm going to say what is, [00:43:48] let's just do it like this, the [00:43:50] frequency of your heartbeat. And it's [00:43:52] going to tell us, I believe 30 minutes [00:43:54] is the default. Let's see. Okay. So, [00:43:56] good job. I checked that because it [00:43:57] looks like it's actually off. So, I'm [00:43:58] going to tell it turn on the heartbeat [00:44:00] and enable it every 30 minutes. Okay. [00:44:03] So, anyways, good job. We we figured [00:44:05] that out because I forgot that it was [00:44:06] off by default. And this is the thing, [00:44:08] right? If you don't know something, just [00:44:09] ask the agent like I'm asking it. But [00:44:11] generally, these are kind of the best [00:44:12] practices for the setup. So, now it's [00:44:14] kind of modified the config. And you can [00:44:16] see that it's going to heartbeat every [00:44:17] 30 minutes now. And then every 30 [00:44:19] minutes, we will have that task that's [00:44:21] inside of that file kind of, you know, [00:44:24] happen, right? Okay. So, that's that. [00:44:26] The next thing I want to quickly go over [00:44:28] is crons. So I don't think that's inside [00:44:31] of here, but it should be in its own [00:44:32] folder. Yes, it's own folder. Crons [00:44:34] essentially a cron is a task that can [00:44:37] run at a set time at a set frequency. So [00:44:40] for example, if you wanted to be [00:44:41] reminded of something at 9:00 a.m. That [00:44:44] is a cron where at 9:00 a.m. this task [00:44:46] will run that will remind you of [00:44:47] something. And you can see the cron jobs [00:44:49] here inside of the uh what do you call [00:44:52] it here? The open clog gateway. And you [00:44:54] can manually create your own one by [00:44:56] going through this or you can just tell [00:44:58] the agent to set up a cron. So I'm going [00:45:00] to say in five minutes remind me that I [00:45:03] need to finish recording this video [00:45:06] whatever right and then what will happen [00:45:08] is it should automatically create the [00:45:09] cron for us in the gateway and we should [00:45:11] be able to see the job. So in my own [00:45:13] personal clawbot I have like four or [00:45:15] five crons where every day at like 9:00 [00:45:17] a.m. I want you to review the stuff I [00:45:18] did yesterday. give me an update every, [00:45:21] you know, three times a day, whatever. I [00:45:23] want you to do XYZ. So, if you want to [00:45:25] run at a certain time, like remind me to [00:45:26] go to the gym, remind me to eat my [00:45:28] breakfast, you know, that's where a cron [00:45:30] comes in in handy. Or if you want a task [00:45:33] like back up my database or something, [00:45:34] and you want that to run every day at a [00:45:36] certain time, you would make that a [00:45:38] cron. You don't need to necessarily tell [00:45:40] it to make a cron, but just understand [00:45:42] that's what it is. And you can see I now [00:45:44] have this cron. This is a one-off cron [00:45:46] that's scheduled to run in 4 minutes. [00:45:48] And then once it does, I will be able to [00:45:50] see the history. Okay. Now, generally [00:45:52] speaking, there's obviously a lot more [00:45:53] stuff I can go through here in terms of [00:45:55] setting this up, but I don't know if [00:45:56] that's going to be particularly useful, [00:45:58] especially because everybody has their [00:46:00] own unique thing that they want this to [00:46:02] do. I think generally understanding what [00:46:04] I explained here is a very good start. [00:46:06] So, you know what it is you need to [00:46:07] modify, how the thing actually works, [00:46:09] how you can get value out of it, right? [00:46:11] Things like setting up the multiple [00:46:13] group chats, using the different models, [00:46:14] right? All of that stuff is quite useful [00:46:17] and that's kind of what I meant to show [00:46:19] you. So, I will definitely do some [00:46:20] follow-up videos showing some more [00:46:22] advanced use cases of the clawbot or [00:46:24] openclaw, whatever in the future. For [00:46:26] now, though, this is where I will leave [00:46:28] it. And please leave a comment down [00:46:29] below if you want more instructions on a [00:46:31] particular area so I can go more in [00:46:33] depth with that and kind of explain it [00:46:35] in a way that's going to be valuable to [00:46:36] you guys. Anyways, with that said, I [00:46:38] will wrap up the video here. If you [00:46:40] enjoyed, make sure leave a like, [00:46:41] subscribe, and I will see you in the [00:46:43] next one.