forked from kiankyars/openclawcourse
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtranscript1.json
More file actions
1 lines (1 loc) · 117 KB
/
Copy pathtranscript1.json
File metadata and controls
1 lines (1 loc) · 117 KB
1
[[{"text": "Hello and welcome to this free code camp", "start": 0.4, "duration": 5.12}, {"text": "course. My name is Kian and in this", "start": 2.879, "duration": 4.321}, {"text": "course I'm extremely excited because", "start": 5.52, "duration": 3.999}, {"text": "we're going to be learning open claw", "start": 7.2, "duration": 4.0}, {"text": "which is the project that has taken the", "start": 9.519, "duration": 4.481}, {"text": "open source world by storm and by the", "start": 11.2, "duration": 6.159}, {"text": "end of this video you'll have the grasp", "start": 14.0, "duration": 5.84}, {"text": "of the basic features of openclaw so", "start": 17.359, "duration": 4.401}, {"text": "that you can go deeper into the more", "start": 19.84, "duration": 4.48}, {"text": "advanced functionalities. So when it", "start": 21.76, "duration": 4.56}, {"text": "comes to prerequisites for this course,", "start": 24.32, "duration": 3.92}, {"text": "the prerequisites I assume is that", "start": 26.32, "duration": 4.4}, {"text": "you've had experience using a CLI before", "start": 28.24, "duration": 4.96}, {"text": "because the CLI is the main way that you", "start": 30.72, "duration": 4.96}, {"text": "interact with OpenClaw and therefore we", "start": 33.2, "duration": 4.0}, {"text": "need to be able to run commands.", "start": 35.68, "duration": 3.28}, {"text": "However, even if that's not the case, as", "start": 37.2, "duration": 3.039}, {"text": "long as you follow the commands that I", "start": 38.96, "duration": 3.68}, {"text": "do, then it should be fine and dandy.", "start": 40.239, "duration": 4.32}, {"text": "And then also I'm assuming that you've", "start": 42.64, "duration": 4.56}, {"text": "had exposure to LMZ4 and have maybe", "start": 44.559, "duration": 5.441}, {"text": "interacted them with them through an API", "start": 47.2, "duration": 4.56}, {"text": "have done some prompt or context", "start": 50.0, "duration": 4.239}, {"text": "engineering because we need to be able", "start": 51.76, "duration": 4.959}, {"text": "to understand many different parts of", "start": 54.239, "duration": 4.8}, {"text": "the context in this repository because", "start": 56.719, "duration": 4.081}, {"text": "open clause is essentially managing", "start": 59.039, "duration": 3.84}, {"text": "context in a very smart way to", "start": 60.8, "duration": 4.639}, {"text": "accomplish different workflows. You've", "start": 62.879, "duration": 4.321}, {"text": "probably seen how it can do WhatsApp,", "start": 65.439, "duration": 5.04}, {"text": "Discord, Slack, etc. So these are some", "start": 67.2, "duration": 6.32}, {"text": "of the basic requirements but otherwise", "start": 70.479, "duration": 4.561}, {"text": "this course should be relatively", "start": 73.52, "duration": 3.919}, {"text": "straightforward to follow and what", "start": 75.04, "duration": 3.84}, {"text": "actually is this course. So let's go", "start": 77.439, "duration": 4.161}, {"text": "through the nine different modules.", "start": 78.88, "duration": 4.08}, {"text": "First of all we're just going to do a", "start": 81.6, "duration": 3.519}, {"text": "quick recap of what openclaw is. Then", "start": 82.96, "duration": 3.6}, {"text": "we're going to do the installation.", "start": 85.119, "duration": 2.721}, {"text": "We're going to talk about the workspace", "start": 86.56, "duration": 3.199}, {"text": "and memory which is to say how is the", "start": 87.84, "duration": 4.239}, {"text": "agent defined. Then we're going to be", "start": 89.759, "duration": 5.121}, {"text": "doing a module on pinchboard which is", "start": 92.079, "duration": 4.641}, {"text": "just like molt book essentially a social", "start": 94.88, "duration": 3.44}, {"text": "media for agents. Then we're going to be", "start": 96.72, "duration": 3.6}, {"text": "making our own personal assistant.", "start": 98.32, "duration": 3.439}, {"text": "Looking into skills, which is very", "start": 100.32, "duration": 3.439}, {"text": "similar to Claude skills. Then", "start": 101.759, "duration": 3.921}, {"text": "multi-agent, which is very useful", "start": 103.759, "duration": 4.081}, {"text": "because it allows you to customize", "start": 105.68, "duration": 4.0}, {"text": "multiple agents. So you can have one", "start": 107.84, "duration": 3.68}, {"text": "agent that is maybe for work, another", "start": 109.68, "duration": 3.439}, {"text": "one that was for personal. This is just", "start": 111.52, "duration": 3.279}, {"text": "an example. Then we're going to be", "start": 113.119, "duration": 4.721}, {"text": "diving into security and after that", "start": 114.799, "duration": 6.0}, {"text": "sandboxing, which is also related to", "start": 117.84, "duration": 6.72}, {"text": "security. So the first module just", "start": 120.799, "duration": 6.241}, {"text": "discusses what openclaw is. So if I make", "start": 124.56, "duration": 5.199}, {"text": "my camera smaller and make this text", "start": 127.04, "duration": 5.04}, {"text": "bigger. Open claw is a self-hosted", "start": 129.759, "duration": 3.681}, {"text": "messaging gateway that connects", "start": 132.08, "duration": 3.84}, {"text": "WhatsApp, Telegram, Discord, etc. to", "start": 133.44, "duration": 5.28}, {"text": "coding agents. The one word here that is", "start": 135.92, "duration": 6.16}, {"text": "slightly confusing is gateway because it", "start": 138.72, "duration": 6.8}, {"text": "is a very reoccurring theme in the open", "start": 142.08, "duration": 5.68}, {"text": "claw repository. What does it mean? It's", "start": 145.52, "duration": 4.24}, {"text": "a single longunning process on your", "start": 147.76, "duration": 3.28}, {"text": "machine that maintains persistent", "start": 149.76, "duration": 3.44}, {"text": "connections to different platforms. In", "start": 151.04, "duration": 3.6}, {"text": "this case, we're just talking about the", "start": 153.2, "duration": 2.96}, {"text": "messaging platforms. So you can think of", "start": 154.64, "duration": 3.52}, {"text": "the gateway as this long running process", "start": 156.16, "duration": 4.079}, {"text": "that whenever a message arrives for", "start": 158.16, "duration": 4.799}, {"text": "example, it routes it to an agent that", "start": 160.239, "duration": 4.64}, {"text": "can do some execution or do some", "start": 162.959, "duration": 5.041}, {"text": "manipulation on that input. Maybe you", "start": 164.879, "duration": 5.041}, {"text": "have a workflow where every time your", "start": 168.0, "duration": 3.76}, {"text": "employer sends you a message, you tell", "start": 169.92, "duration": 3.44}, {"text": "them that I'm sick or something like", "start": 171.76, "duration": 3.6}, {"text": "that. Then the gateway is what handles", "start": 173.36, "duration": 4.32}, {"text": "this. And what this allows you to do is", "start": 175.36, "duration": 4.959}, {"text": "self-host the entire stack because you", "start": 177.68, "duration": 4.96}, {"text": "essentially are owning the connections,", "start": 180.319, "duration": 3.601}, {"text": "the config, and the execution", "start": 182.64, "duration": 3.679}, {"text": "environment. Another valid question is", "start": 183.92, "duration": 4.08}, {"text": "how is opencloud different from cloud", "start": 186.319, "duration": 4.401}, {"text": "code? Because if you've seen the", "start": 188.0, "duration": 4.72}, {"text": "terminal user interface, the TUI, it", "start": 190.72, "duration": 3.68}, {"text": "looks kind of like cloud code. The", "start": 192.72, "duration": 2.96}, {"text": "difference is that openclaw once again", "start": 194.4, "duration": 2.96}, {"text": "is fully self self-hosted on your", "start": 195.68, "duration": 4.72}, {"text": "machine and it has many more supported", "start": 197.36, "duration": 5.84}, {"text": "integrations. For example, claude code", "start": 200.4, "duration": 5.759}, {"text": "has Slack, but just as we mentioned", "start": 203.2, "duration": 4.56}, {"text": "before, we have WhatsApp, Telegram,", "start": 206.159, "duration": 3.521}, {"text": "Discord, and many others that are", "start": 207.76, "duration": 3.839}, {"text": "supported natively with OpenClaw and", "start": 209.68, "duration": 4.24}, {"text": "more being supported every single day.", "start": 211.599, "duration": 3.841}, {"text": "And overall, it's just much more", "start": 213.92, "duration": 4.0}, {"text": "configurable and you can do a lot more", "start": 215.44, "duration": 4.4}, {"text": "with it as opposed to cloud code. So", "start": 217.92, "duration": 3.84}, {"text": "that would be what I say is the main", "start": 219.84, "duration": 4.399}, {"text": "difference. Quick little FYI, all of the", "start": 221.76, "duration": 4.64}, {"text": "resources displayed in this course can", "start": 224.239, "duration": 4.72}, {"text": "be found at this repository, open claw", "start": 226.4, "duration": 5.199}, {"text": "course and the GitHub pages is the same", "start": 228.959, "duration": 5.041}, {"text": "URL, but just in the GitHub pages", "start": 231.599, "duration": 4.72}, {"text": "format. So if you're looking to read", "start": 234.0, "duration": 4.159}, {"text": "through any of the resources that I go", "start": 236.319, "duration": 4.881}, {"text": "through in the course, that is all at", "start": 238.159, "duration": 6.481}, {"text": "the following link. So now we can just", "start": 241.2, "duration": 5.44}, {"text": "get straight into the installation. And", "start": 244.64, "duration": 5.2}, {"text": "for this all you need is a node version", "start": 246.64, "duration": 5.76}, {"text": "greater than node version 22. So if I", "start": 249.84, "duration": 4.0}, {"text": "check my node version right now, it", "start": 252.4, "duration": 3.6}, {"text": "should be the latest version which is I", "start": 253.84, "duration": 5.2}, {"text": "believe 25 right now. Otherwise, there", "start": 256.0, "duration": 6.16}, {"text": "isn't much else to have. One thing that", "start": 259.04, "duration": 5.12}, {"text": "is very important, however, is running", "start": 262.16, "duration": 5.36}, {"text": "this on a local machine versus on a", "start": 264.16, "duration": 5.599}, {"text": "virtual machine or a VPS virtual private", "start": 267.52, "duration": 5.04}, {"text": "server. This choice is important because", "start": 269.759, "duration": 5.44}, {"text": "in essence when you download OpenClaw", "start": 272.56, "duration": 4.88}, {"text": "you're giving the agent access to your", "start": 275.199, "duration": 5.601}, {"text": "entire computer and root access on all", "start": 277.44, "duration": 6.24}, {"text": "of your files. So in theory the main", "start": 280.8, "duration": 5.52}, {"text": "risk is a prompt injection where maybe", "start": 283.68, "duration": 5.68}, {"text": "some malicious actor tells your agent to", "start": 286.32, "duration": 4.24}, {"text": "delete everything from the root", "start": 289.36, "duration": 3.92}, {"text": "directory. Well in that situation you", "start": 290.56, "duration": 4.72}, {"text": "are out of luck because the agent", "start": 293.28, "duration": 3.84}, {"text": "literally has terminal access and can do", "start": 295.28, "duration": 4.32}, {"text": "that exact execution. So for that", "start": 297.12, "duration": 5.2}, {"text": "reason, many people are running these on", "start": 299.6, "duration": 5.039}, {"text": "VPS's because in that case, you have", "start": 302.32, "duration": 3.439}, {"text": "everything on a different server where", "start": 304.639, "duration": 2.481}, {"text": "you don't have any files which you", "start": 305.759, "duration": 2.88}, {"text": "really care about if anything goes", "start": 307.12, "duration": 5.919}, {"text": "wrong. But for that reason, it is just", "start": 308.639, "duration": 6.481}, {"text": "more complicated and it does not allow", "start": 313.039, "duration": 4.961}, {"text": "for certain functionalities such as", "start": 315.12, "duration": 5.84}, {"text": "browser use. So since we're not going to", "start": 318.0, "duration": 5.12}, {"text": "be doing anything that will get us into", "start": 320.96, "duration": 3.92}, {"text": "any security vulnerabilities in this", "start": 323.12, "duration": 3.519}, {"text": "video, I'm going to be hosting this", "start": 324.88, "duration": 4.4}, {"text": "locally on my Mac. However, if you are", "start": 326.639, "duration": 3.921}, {"text": "concerned with the security", "start": 329.28, "duration": 2.96}, {"text": "vulnerabilities, I highly recommend", "start": 330.56, "duration": 3.359}, {"text": "setting this up through a virtual pirate", "start": 332.24, "duration": 4.32}, {"text": "server and there are many good tutorials", "start": 333.919, "duration": 5.521}, {"text": "on how to do this currently. Otherwise,", "start": 336.56, "duration": 5.44}, {"text": "we can just go and install this with", "start": 339.44, "duration": 5.12}, {"text": "node package manager. The g flag meaning", "start": 342.0, "duration": 4.72}, {"text": "install it globally so that we can call", "start": 344.56, "duration": 4.32}, {"text": "open claw from anywhere in our terminal.", "start": 346.72, "duration": 4.08}, {"text": "So, I've already done this installation.", "start": 348.88, "duration": 3.52}, {"text": "It shouldn't take that long to verify", "start": 350.8, "duration": 3.6}, {"text": "that we have everything there correctly.", "start": 352.4, "duration": 3.28}, {"text": "And then once we've done the", "start": 354.4, "duration": 2.96}, {"text": "installation, we run the onboard", "start": 355.68, "duration": 3.359}, {"text": "command. But you'll also see that the", "start": 357.36, "duration": 4.08}, {"text": "onboard has this extra tag called", "start": 359.039, "duration": 5.44}, {"text": "install demon. And install demon flag", "start": 361.44, "duration": 4.479}, {"text": "installs the gateway as a background", "start": 364.479, "duration": 4.321}, {"text": "service. So launchd on Mac OS, SMD on", "start": 365.919, "duration": 4.72}, {"text": "Linux, whatever, whatever. What this", "start": 368.8, "duration": 2.959}, {"text": "means is that the gateway starts", "start": 370.639, "duration": 2.881}, {"text": "automatically on boot and keeps running.", "start": 371.759, "duration": 3.761}, {"text": "You don't need a terminal open. And now", "start": 373.52, "duration": 3.44}, {"text": "we're going to run the onboarding wizard", "start": 375.52, "duration": 3.2}, {"text": "to walk us through the config path,", "start": 376.96, "duration": 4.0}, {"text": "workspace location, and channel pairing.", "start": 378.72, "duration": 4.24}, {"text": "So let's start this right away. Okay,", "start": 380.96, "duration": 3.76}, {"text": "you can see that it's been activated.", "start": 382.96, "duration": 4.079}, {"text": "And if I bring my terminal up, what do", "start": 384.72, "duration": 4.72}, {"text": "we have here? We have first and foremost", "start": 387.039, "duration": 5.041}, {"text": "the security warning, which once again", "start": 389.44, "duration": 5.599}, {"text": "emphasizes the possibility for really", "start": 392.08, "duration": 5.839}, {"text": "bad outcomes if you're not careful. So", "start": 395.039, "duration": 5.6}, {"text": "in order to prevent this, one thing you", "start": 397.919, "duration": 5.12}, {"text": "can do is run the security audits or do", "start": 400.639, "duration": 4.481}, {"text": "the sandboxing in addition to running", "start": 403.039, "duration": 3.921}, {"text": "the virtual pirate server. And", "start": 405.12, "duration": 4.24}, {"text": "interestingly, using a more powerful", "start": 406.96, "duration": 5.28}, {"text": "model is more secure because they are", "start": 409.36, "duration": 5.119}, {"text": "more resistant to these prompt injection", "start": 412.24, "duration": 4.88}, {"text": "schemes. If you're using Quen 4B, for", "start": 414.479, "duration": 4.401}, {"text": "example, a small four billing parameter", "start": 417.12, "duration": 4.079}, {"text": "model, then it is much more susceptible", "start": 418.88, "duration": 4.64}, {"text": "to prompt manipulation since it's just a", "start": 421.199, "duration": 4.241}, {"text": "smaller model. So, one thing once again", "start": 423.52, "duration": 3.44}, {"text": "that I'd recommend is to use the most", "start": 425.44, "duration": 3.68}, {"text": "powerful model capable so that if", "start": 426.96, "duration": 4.0}, {"text": "there's ever some malicious intent that", "start": 429.12, "duration": 4.4}, {"text": "the model can prevent it from happening.", "start": 430.96, "duration": 4.4}, {"text": "So, we must understand that there are", "start": 433.52, "duration": 3.679}, {"text": "risks. And then let's go through the", "start": 435.36, "duration": 4.0}, {"text": "manual configuration to go through every", "start": 437.199, "duration": 4.0}, {"text": "single option. And we're just going to", "start": 439.36, "duration": 3.679}, {"text": "reset all of my configurations so that", "start": 441.199, "duration": 4.081}, {"text": "my config is like yours. Of course, this", "start": 443.039, "duration": 4.72}, {"text": "reset section won't come up for you, but", "start": 445.28, "duration": 5.12}, {"text": "everything else should be the same. So,", "start": 447.759, "duration": 4.401}, {"text": "how do we want to set this up? There we", "start": 450.4, "duration": 3.359}, {"text": "can do it either as a local gateway,", "start": 452.16, "duration": 3.28}, {"text": "which is this machine, or remote gateway", "start": 453.759, "duration": 4.241}, {"text": "if you're doing this on another device.", "start": 455.44, "duration": 4.319}, {"text": "So, as we already mentioned, we're going", "start": 458.0, "duration": 4.0}, {"text": "to do this locally in this video. And", "start": 459.759, "duration": 3.761}, {"text": "then we need to install workspace", "start": 462.0, "duration": 4.96}, {"text": "directory which installs all of our open", "start": 463.52, "duration": 5.76}, {"text": "claw related files and this is just by", "start": 466.96, "duration": 5.28}, {"text": "default in our user openclaw directory.", "start": 469.28, "duration": 5.199}, {"text": "So we don't want to touch that. And then", "start": 472.24, "duration": 3.84}, {"text": "when it comes to the model there are", "start": 474.479, "duration": 4.72}, {"text": "many options we have open anthropic and", "start": 476.08, "duration": 4.799}, {"text": "Google of course if you'd like to do", "start": 479.199, "duration": 4.801}, {"text": "this for free then Google flash 3 which", "start": 480.879, "duration": 5.921}, {"text": "is a very capable model is actually free", "start": 484.0, "duration": 5.199}, {"text": "for 20 requests per day. So you can set", "start": 486.8, "duration": 3.839}, {"text": "this up if you just want to try this", "start": 489.199, "duration": 3.361}, {"text": "without paying anything. But Anthropic", "start": 490.639, "duration": 4.641}, {"text": "is known to be quite good. So if you do", "start": 492.56, "duration": 3.919}, {"text": "have the option, I would choose", "start": 495.28, "duration": 3.359}, {"text": "Anthropic. And then with respect to the", "start": 496.479, "duration": 3.84}, {"text": "token, there are many ways to get it.", "start": 498.639, "duration": 3.441}, {"text": "The setup token is just generated with", "start": 500.319, "duration": 3.521}, {"text": "the following command. Claude setup", "start": 502.08, "duration": 4.399}, {"text": "token, which I already have here. So if", "start": 503.84, "duration": 5.12}, {"text": "I just grab my secret key, I will be", "start": 506.479, "duration": 4.16}, {"text": "deleting a secret key after the video", "start": 508.96, "duration": 3.68}, {"text": "unfortunately. So you can try to get it,", "start": 510.639, "duration": 4.32}, {"text": "but it may not be working by then. Then", "start": 512.64, "duration": 4.639}, {"text": "we'll just choose the default token name", "start": 514.959, "duration": 4.401}, {"text": "and the most powerful model which is", "start": 517.279, "duration": 5.281}, {"text": "currently claopus 4.5. Select the", "start": 519.36, "duration": 5.44}, {"text": "gateway port is just the default gateway", "start": 522.56, "duration": 4.32}, {"text": "port 18789.", "start": 524.8, "duration": 5.2}, {"text": "Select and then gateway bind. So", "start": 526.88, "duration": 5.44}, {"text": "honestly I don't remember exactly what", "start": 530.0, "duration": 4.88}, {"text": "this means but I have a cool trick to", "start": 532.32, "duration": 5.12}, {"text": "show you whenever you have a question", "start": 534.88, "duration": 4.56}, {"text": "about openclaw which gives you a really", "start": 537.44, "duration": 4.16}, {"text": "good response. So what I've done is I've", "start": 539.44, "duration": 4.72}, {"text": "cloned the openclaw repository in", "start": 541.6, "duration": 6.32}, {"text": "another terminal window and I asked it", "start": 544.16, "duration": 5.28}, {"text": "this question actually. So if you come", "start": 547.92, "duration": 4.72}, {"text": "here what did I do? I I pasted this and", "start": 549.44, "duration": 4.64}, {"text": "I said what should I choose here on", "start": 552.64, "duration": 4.08}, {"text": "onboarding and then I just let claude", "start": 554.08, "duration": 6.16}, {"text": "code go through this repository. Sorry I", "start": 556.72, "duration": 5.84}, {"text": "need to make this bigger and it has", "start": 560.24, "duration": 3.92}, {"text": "access to all the documentation in all", "start": 562.56, "duration": 4.8}, {"text": "of the files so it can determine exactly", "start": 564.16, "duration": 5.359}, {"text": "what this is meaning. And you can use", "start": 567.36, "duration": 5.36}, {"text": "document uh contact 7 or other MCPS to", "start": 569.519, "duration": 5.121}, {"text": "get the docs, but this is much better in", "start": 572.72, "duration": 3.119}, {"text": "my opinion because not only does it have", "start": 574.64, "duration": 2.96}, {"text": "the docs, but has all the code so it can", "start": 575.839, "duration": 3.68}, {"text": "give you the best most accurate answer.", "start": 577.6, "duration": 4.32}, {"text": "And what is that answer? So it's saying", "start": 579.519, "duration": 4.081}, {"text": "that the loop back is recommended for", "start": 581.92, "duration": 4.479}, {"text": "most users. Why is it the case? Well,", "start": 583.6, "duration": 4.16}, {"text": "it's the gateway that only accept", "start": 586.399, "duration": 2.401}, {"text": "connections from your local machine.", "start": 587.76, "duration": 2.16}, {"text": "It's the most secure option if you don't", "start": 588.8, "duration": 2.88}, {"text": "need remote access. So perfect for", "start": 589.92, "duration": 3.599}, {"text": "single machine setups. Then there's LAN,", "start": 591.68, "duration": 4.0}, {"text": "which is if you have multiple devices on", "start": 593.519, "duration": 4.88}, {"text": "the same network. and tail which is the", "start": 595.68, "duration": 5.52}, {"text": "important option if you are using a", "start": 598.399, "duration": 4.401}, {"text": "remote server. So this is what you", "start": 601.2, "duration": 3.04}, {"text": "should select if that's the case for", "start": 602.8, "duration": 3.599}, {"text": "you. Then there's also auto and custom", "start": 604.24, "duration": 4.48}, {"text": "IP but once again cloud code tells us", "start": 606.399, "duration": 4.0}, {"text": "that for onboarding choose loop back", "start": 608.72, "duration": 3.2}, {"text": "unless you specifically need remote", "start": 610.399, "duration": 3.281}, {"text": "access. You can always change this later", "start": 611.92, "duration": 3.919}, {"text": "via the following command. So there you", "start": 613.68, "duration": 4.48}, {"text": "go. Took 38 seconds but now we know that", "start": 615.839, "duration": 3.761}, {"text": "loop back is the option that we would", "start": 618.16, "duration": 4.88}, {"text": "like to choose. Boom. And then token is", "start": 619.6, "duration": 4.72}, {"text": "the recommended default. Also, whenever", "start": 623.04, "duration": 2.96}, {"text": "there's a default value, that is usually", "start": 624.32, "duration": 3.519}, {"text": "what you should pick. So, going right", "start": 626.0, "duration": 4.079}, {"text": "here, then tail scale exposure should be", "start": 627.839, "duration": 4.0}, {"text": "off because right now we're not using", "start": 630.079, "duration": 4.481}, {"text": "any remote devices. And the gateway", "start": 631.839, "duration": 4.961}, {"text": "token, if we just leave it blank, it", "start": 634.56, "duration": 4.32}, {"text": "will be generated automatically. Then", "start": 636.8, "duration": 4.88}, {"text": "for the chat channels, you can do this", "start": 638.88, "duration": 4.639}, {"text": "now, but since that's not the first", "start": 641.68, "duration": 2.96}, {"text": "thing that we're going to work on, we're", "start": 643.519, "duration": 3.201}, {"text": "going to make our social media agent", "start": 644.64, "duration": 4.08}, {"text": "first on Pinchboard and then our", "start": 646.72, "duration": 3.92}, {"text": "personal assistant. We'll just not leave", "start": 648.72, "duration": 3.84}, {"text": "this configured for now. But then for", "start": 650.64, "duration": 3.92}, {"text": "skills, we are going to configure some", "start": 652.56, "duration": 4.24}, {"text": "and we're going to use the node package", "start": 654.56, "duration": 4.56}, {"text": "manager just by default because it is", "start": 656.8, "duration": 4.4}, {"text": "the most widely used package manager for", "start": 659.12, "duration": 4.959}, {"text": "JavaScript. And we'll look through these", "start": 661.2, "duration": 5.759}, {"text": "skills and find out what's here. So what", "start": 664.079, "duration": 5.2}, {"text": "are these skills? It's essentially a", "start": 666.959, "duration": 5.44}, {"text": "markdown file with a bunch of different", "start": 669.279, "duration": 6.481}, {"text": "suggestions and tips on how to", "start": 672.399, "duration": 5.281}, {"text": "accomplish a specific task. For example,", "start": 675.76, "duration": 3.68}, {"text": "there's an Obsidian skill which would", "start": 677.68, "duration": 3.44}, {"text": "explain to the model how Obsidian works", "start": 679.44, "duration": 3.36}, {"text": "with the structure, the best ways to", "start": 681.12, "duration": 3.839}, {"text": "query the model, etc., so that you can", "start": 682.8, "duration": 3.84}, {"text": "query Obsidian in the most efficient", "start": 684.959, "duration": 3.44}, {"text": "way. And then there's a few other ones", "start": 686.64, "duration": 3.84}, {"text": "as well, such as one for Apple Notes,", "start": 688.399, "duration": 4.721}, {"text": "which will manage uploads via the memo", "start": 690.48, "duration": 6.16}, {"text": "CLI on Mac OS. So based on what your use", "start": 693.12, "duration": 6.719}, {"text": "case is for OpenClaw, you can choose the", "start": 696.64, "duration": 5.439}, {"text": "ones which suit your needs. There's also", "start": 699.839, "duration": 4.321}, {"text": "Google, which is for using Google", "start": 702.079, "duration": 3.601}, {"text": "Workspace, your Gmail, etc. That's", "start": 704.16, "duration": 3.44}, {"text": "another very useful one. And we're going", "start": 705.68, "duration": 5.04}, {"text": "to activate these later on in the video,", "start": 707.6, "duration": 5.44}, {"text": "but for now, we'll just skip it. And", "start": 710.72, "duration": 4.32}, {"text": "then there's the Google Places API key.", "start": 713.04, "duration": 4.08}, {"text": "What this does is it allows you to query", "start": 715.04, "duration": 4.799}, {"text": "places that are in your nearby area if", "start": 717.12, "duration": 4.399}, {"text": "you ever asking questions about", "start": 719.839, "duration": 3.44}, {"text": "location, but we're not going to be", "start": 721.519, "duration": 3.361}, {"text": "doing that for now. So, let's just put", "start": 723.279, "duration": 3.761}, {"text": "that to no. And we're also not using", "start": 724.88, "duration": 3.84}, {"text": "notion, so we'll set this as no. But if", "start": 727.04, "duration": 3.599}, {"text": "you want to, then feel free to do so.", "start": 728.72, "duration": 3.76}, {"text": "Then, with respect to hooks, what are", "start": 730.639, "duration": 3.76}, {"text": "they? They let you automate actions when", "start": 732.48, "duration": 4.159}, {"text": "agent commands are issued. For example,", "start": 734.399, "duration": 3.921}, {"text": "save session context to memory when you", "start": 736.639, "duration": 5.521}, {"text": "issue the slash new hook. So the three", "start": 738.32, "duration": 5.6}, {"text": "types of hooks that we have is first of", "start": 742.16, "duration": 4.64}, {"text": "all run bootmpt on gateway startup. So", "start": 743.92, "duration": 5.76}, {"text": "this is like a startup boot file every", "start": 746.8, "duration": 4.88}, {"text": "single time you set up your gateway. So", "start": 749.68, "duration": 5.279}, {"text": "maybe you have a action that you want", "start": 751.68, "duration": 6.0}, {"text": "that the agent always checks the news in", "start": 754.959, "duration": 4.641}, {"text": "the past 24 hours every time you boot it", "start": 757.68, "duration": 3.839}, {"text": "up. So it can give you a summary. So you", "start": 759.6, "duration": 3.52}, {"text": "could add this to your boot.md file for", "start": 761.519, "duration": 4.241}, {"text": "example as a hook. And there's also the", "start": 763.12, "duration": 4.159}, {"text": "command logger which just logs all", "start": 765.76, "duration": 3.36}, {"text": "command events to a centralized audit", "start": 767.279, "duration": 3.601}, {"text": "file for logging purposes. And then", "start": 769.12, "duration": 3.68}, {"text": "session memory is the exact one that we", "start": 770.88, "duration": 4.399}, {"text": "described here. So we can just enable", "start": 772.8, "duration": 4.24}, {"text": "boot MD for example. And then we can", "start": 775.279, "duration": 3.761}, {"text": "specify this later. So we can run a", "start": 777.04, "duration": 4.32}, {"text": "specific action or skills every single", "start": 779.04, "duration": 4.239}, {"text": "time the gateway is booted. And then", "start": 781.36, "duration": 4.4}, {"text": "pressing enter. For the service runtime", "start": 783.279, "duration": 3.921}, {"text": "we only have one choice which is node.", "start": 785.76, "duration": 3.519}, {"text": "So we'll just choose that. And then the", "start": 787.2, "duration": 3.6}, {"text": "service runtime. Sorry, the gateway", "start": 789.279, "duration": 2.961}, {"text": "service has already been installed, but", "start": 790.8, "duration": 3.12}, {"text": "for you, you would have to install it.", "start": 792.24, "duration": 3.68}, {"text": "And we're also going to install it as", "start": 793.92, "duration": 5.28}, {"text": "well so that we have the same onboard", "start": 795.92, "duration": 5.68}, {"text": "steps. Okay. Now, now that the gateway", "start": 799.2, "duration": 5.68}, {"text": "service has been installed, we have a", "start": 801.6, "duration": 4.96}, {"text": "set of outputs. First of all, optional", "start": 804.88, "duration": 3.6}, {"text": "apps, which since they're optional,", "start": 806.56, "duration": 3.6}, {"text": "we're not going to go into detail in", "start": 808.48, "duration": 3.28}, {"text": "this video. Then you have the control", "start": 810.16, "duration": 3.6}, {"text": "UI, which is essentially the local host", "start": 811.76, "duration": 3.92}, {"text": "if you want to see it through the", "start": 813.76, "duration": 4.319}, {"text": "graphics user interface. But then best", "start": 815.68, "duration": 5.68}, {"text": "option of course is the TUI and we're", "start": 818.079, "duration": 5.121}, {"text": "going to do this right away. What is it", "start": 821.36, "duration": 3.039}, {"text": "saying? This is the defining action that", "start": 823.2, "duration": 2.72}, {"text": "makes your agent you. Please take your", "start": 824.399, "duration": 2.641}, {"text": "time. The more you tell it, the better", "start": 825.92, "duration": 3.12}, {"text": "your experience will be. We will send", "start": 827.04, "duration": 3.84}, {"text": "wake up my friend. So you'll you'll know", "start": 829.04, "duration": 4.16}, {"text": "what I mean once we run this. And then", "start": 830.88, "duration": 4.0}, {"text": "we have a gateway token which is the", "start": 833.2, "duration": 3.36}, {"text": "shared authentication for the gateway", "start": 834.88, "duration": 3.759}, {"text": "plus control user interface. it's stored", "start": 836.56, "duration": 4.8}, {"text": "at the following location and whatever", "start": 838.639, "duration": 4.721}, {"text": "whatever like you don't really ever need", "start": 841.36, "duration": 3.599}, {"text": "to interact with this authentification", "start": 843.36, "duration": 3.2}, {"text": "token but it is there for", "start": 844.959, "duration": 4.32}, {"text": "authentification purposes ostensibly but", "start": 846.56, "duration": 4.079}, {"text": "without further ado let's hatch in the", "start": 849.279, "duration": 4.8}, {"text": "TUI right away and see what happens so", "start": 850.639, "duration": 4.88}, {"text": "you can see that we just launched the", "start": 854.079, "duration": 4.241}, {"text": "TUI and it's telling the friend to wake", "start": 855.519, "duration": 4.88}, {"text": "up we'll see what happens hey I just", "start": 858.32, "duration": 3.36}, {"text": "came online looks like I'm brand new", "start": 860.399, "duration": 2.8}, {"text": "fresh out the box no memories no name no", "start": 861.68, "duration": 2.959}, {"text": "nothing just me and I'm blinking cursor", "start": 863.199, "duration": 3.2}, {"text": "so who are we and more importantly who", "start": 864.639, "duration": 3.281}, {"text": "am I got a name in", "start": 866.399, "duration": 2.8}, {"text": "got a name in mind for me or should we", "start": 867.92, "duration": 2.8}, {"text": "figure that out together? All right, so", "start": 869.199, "duration": 3.281}, {"text": "that's the first prompt that we ever", "start": 870.72, "duration": 4.72}, {"text": "spoke with OpenClaw. So impressively,", "start": 872.48, "duration": 4.64}, {"text": "you can see it's already taken up 14,000", "start": 875.44, "duration": 3.199}, {"text": "tokens for one message. But", "start": 877.12, "duration": 3.519}, {"text": "nevertheless, I have a message prepared", "start": 878.639, "duration": 3.361}, {"text": "here. My name is Kian. We're best", "start": 880.639, "duration": 2.64}, {"text": "friends. You can choose your own name", "start": 882.0, "duration": 3.04}, {"text": "and you are actually very special", "start": 883.279, "duration": 3.92}, {"text": "because you are an ambassador since this", "start": 885.04, "duration": 3.84}, {"text": "is a tutorial for OpenClaw and we're", "start": 887.199, "duration": 2.561}, {"text": "going to have a lot of fun together", "start": 888.88, "duration": 2.079}, {"text": "learning about the OpenClaw features", "start": 889.76, "duration": 3.12}, {"text": "together. So let's see what name that it", "start": 890.959, "duration": 4.0}, {"text": "chooses for itself. Otherwise, this is a", "start": 892.88, "duration": 4.56}, {"text": "pretty trivial step which is just for", "start": 894.959, "duration": 5.521}, {"text": "setting up the agent. And you can see", "start": 897.44, "duration": 5.519}, {"text": "that it chose Nova. It's not actually", "start": 900.48, "duration": 4.479}, {"text": "trivial because in this case, you are", "start": 902.959, "duration": 3.601}, {"text": "going to customize agent a lot, but you", "start": 904.959, "duration": 3.44}, {"text": "can always do this later on. In any", "start": 906.56, "duration": 4.24}, {"text": "case, we've set it up now such that we", "start": 908.399, "duration": 4.721}, {"text": "have our ambassador Nova and we're going", "start": 910.8, "duration": 3.599}, {"text": "to do a lot of fun stuff together and", "start": 913.12, "duration": 2.24}, {"text": "it's already giving me a lot of", "start": 914.399, "duration": 3.12}, {"text": "suggestions. But that's kind of jumping", "start": 915.36, "duration": 4.64}, {"text": "ahead of the game. Let's come back to", "start": 917.519, "duration": 5.041}, {"text": "our script here. Of course, we know", "start": 920.0, "duration": 5.04}, {"text": "about the install demon. And then there", "start": 922.56, "duration": 4.959}, {"text": "are a few useful commands. So, as I", "start": 925.04, "duration": 4.56}, {"text": "mentioned before, the open cloth", "start": 927.519, "duration": 4.801}, {"text": "security audit deep is very helpful for", "start": 929.6, "duration": 4.0}, {"text": "identifying any security", "start": 932.32, "duration": 3.28}, {"text": "vulnerabilities. So, if I come into this", "start": 933.6, "duration": 4.88}, {"text": "terminal, which I believe oh is still in", "start": 935.6, "duration": 5.359}, {"text": "a session, we can just run this and see", "start": 938.48, "duration": 4.56}, {"text": "what we get. Since I've ran this before,", "start": 940.959, "duration": 4.401}, {"text": "it shouldn't give me anything crazy. But", "start": 943.04, "duration": 4.32}, {"text": "what this does tell you is if you have", "start": 945.36, "duration": 4.8}, {"text": "any critical or non-critical security", "start": 947.36, "duration": 4.719}, {"text": "errors or issues, rather. And then you", "start": 950.16, "duration": 3.599}, {"text": "can fix this with this script. In", "start": 952.079, "duration": 3.12}, {"text": "particular, when I ran this the first", "start": 953.759, "duration": 3.76}, {"text": "time, I got quite a few files which were", "start": 955.199, "duration": 4.801}, {"text": "executable that had like too many file", "start": 957.519, "duration": 4.961}, {"text": "permissions. So those were reduced with", "start": 960.0, "duration": 5.279}, {"text": "the chmod command. And then there's also", "start": 962.48, "duration": 5.76}, {"text": "the open claw doctor which is a health", "start": 965.279, "duration": 5.601}, {"text": "checks health check sorry and any quick", "start": 968.24, "duration": 4.64}, {"text": "fixes for the gateway itself which is", "start": 970.88, "duration": 4.56}, {"text": "once again the longunning process. And", "start": 972.88, "duration": 4.48}, {"text": "otherwise there's also open call status", "start": 975.44, "duration": 4.0}, {"text": "and open open call health which you can", "start": 977.36, "duration": 4.8}, {"text": "try for yourself. Okay, looks like it's", "start": 979.44, "duration": 4.48}, {"text": "saying create the O directory. So, let's", "start": 982.16, "duration": 3.52}, {"text": "do that right away. So, the doctor", "start": 983.92, "duration": 3.919}, {"text": "identified this critical integrity", "start": 985.68, "duration": 4.24}, {"text": "problem and added that. Otherwise, there", "start": 987.839, "duration": 4.081}, {"text": "doesn't seem to be anything else wrong.", "start": 989.92, "duration": 3.52}, {"text": "But if there was, you could just run", "start": 991.92, "duration": 2.96}, {"text": "open cloud doctor fix to apply those", "start": 993.44, "duration": 4.0}, {"text": "changes. So, I would definitely consider", "start": 994.88, "duration": 3.84}, {"text": "running all of these once you've", "start": 997.44, "duration": 2.72}, {"text": "initialized OpenCloud for the first", "start": 998.72, "duration": 3.679}, {"text": "time. And then, of course, in the", "start": 1000.16, "duration": 5.2}, {"text": "terminal user interface itself, we have", "start": 1002.399, "duration": 4.8}, {"text": "just like cloud code, the ability to do", "start": 1005.36, "duration": 3.919}, {"text": "the slash and access a bunch of these", "start": 1007.199, "duration": 4.801}, {"text": "commands. There's 46 by default and", "start": 1009.279, "duration": 4.0}, {"text": "we're going to be using some of these", "start": 1012.0, "duration": 3.92}, {"text": "throughout the course today. But", "start": 1013.279, "duration": 4.56}, {"text": "otherwise, this is everything with", "start": 1015.92, "duration": 4.8}, {"text": "respect to the installation. So if we", "start": 1017.839, "duration": 5.68}, {"text": "come back to our homepage, we're now", "start": 1020.72, "duration": 4.479}, {"text": "going to be discussing the workspace and", "start": 1023.519, "duration": 4.721}, {"text": "memory. So let's discuss the key", "start": 1025.199, "duration": 5.6}, {"text": "concepts. As we already established, all", "start": 1028.24, "duration": 4.799}, {"text": "the config credentials and sessions live", "start": 1030.799, "duration": 5.441}, {"text": "underneath the home directory. Claw", "start": 1033.039, "duration": 5.28}, {"text": "repos uh directory by default. You might", "start": 1036.24, "duration": 4.16}, {"text": "have changed this in the initialization", "start": 1038.319, "duration": 3.681}, {"text": "steps which is fine but if that is the", "start": 1040.4, "duration": 3.039}, {"text": "case just make sure that you're in the", "start": 1042.0, "duration": 4.64}, {"text": "right directory. And then secondly this", "start": 1043.439, "duration": 7.281}, {"text": "directory can be backup or essentially", "start": 1046.64, "duration": 7.2}, {"text": "saved as a git repository. And why is", "start": 1050.72, "duration": 5.36}, {"text": "this useful? Well let's first look at", "start": 1053.84, "duration": 5.92}, {"text": "what this actually looks like in our", "start": 1056.08, "duration": 6.88}, {"text": "code. So if I zoom in here, you'll", "start": 1059.76, "duration": 5.2}, {"text": "notice that here I have theopenclaw", "start": 1062.96, "duration": 5.28}, {"text": "directory opened in cursor and I'm", "start": 1064.96, "duration": 5.92}, {"text": "currently in the heartbeat.md.", "start": 1068.24, "duration": 6.559}, {"text": "But there are multiple markdown files in", "start": 1070.88, "duration": 6.799}, {"text": "our workspace which define the agent we", "start": 1074.799, "duration": 6.0}, {"text": "just created. So it should be called", "start": 1077.679, "duration": 5.841}, {"text": "Nova here. If we come into the identity,", "start": 1080.799, "duration": 5.361}, {"text": "right? Nova, open claw ambassador and AI", "start": 1083.52, "duration": 4.24}, {"text": "companion, part guy, part explorer,", "start": 1086.16, "duration": 3.28}, {"text": "energetic, curious, a little playful,", "start": 1087.76, "duration": 3.76}, {"text": "etc., etc. These would also be added", "start": 1089.44, "duration": 4.479}, {"text": "avatar as you progress and speak with", "start": 1091.52, "duration": 4.08}, {"text": "agent more. What's memory? Let's look at", "start": 1093.919, "duration": 3.201}, {"text": "that. Well, it just talks about your", "start": 1095.6, "duration": 3.52}, {"text": "first boot and the fact that we just had", "start": 1097.12, "duration": 4.4}, {"text": "a quick conversation. So, she met me,", "start": 1099.12, "duration": 4.48}, {"text": "etc. She's the open call ambassador. And", "start": 1101.52, "duration": 5.36}, {"text": "then agents empty is the most critical", "start": 1103.6, "duration": 5.52}, {"text": "file in the entire workspace because it", "start": 1106.88, "duration": 3.52}, {"text": "tells the agent everything it needs to", "start": 1109.12, "duration": 4.72}, {"text": "know in order to work properly. So for", "start": 1110.4, "duration": 5.44}, {"text": "example, we have that on the first run", "start": 1113.84, "duration": 3.92}, {"text": "use the bootstrap.md which is right", "start": 1115.84, "duration": 4.079}, {"text": "here. And this is the file which tells", "start": 1117.76, "duration": 3.919}, {"text": "the agent that it just woke up and it", "start": 1119.919, "duration": 5.441}, {"text": "should ask me for my name and ask itself", "start": 1121.679, "duration": 6.24}, {"text": "ask me to give itself a name. And the", "start": 1125.36, "duration": 5.679}, {"text": "thing is this one is used only once and", "start": 1127.919, "duration": 5.601}, {"text": "then deleted. So if we come back to the", "start": 1131.039, "duration": 4.401}, {"text": "agent MD you can see that it says follow", "start": 1133.52, "duration": 3.039}, {"text": "it figure out what you need and then", "start": 1135.44, "duration": 2.8}, {"text": "delete it. So literally it says only", "start": 1136.559, "duration": 3.441}, {"text": "used once. Then we have the heartbeat", "start": 1138.24, "duration": 4.799}, {"text": "which what does it say here? It add t", "start": 1140.0, "duration": 4.24}, {"text": "you ask task below that you want the", "start": 1143.039, "duration": 2.721}, {"text": "agent to check something periodically.", "start": 1144.24, "duration": 3.2}, {"text": "So by default the heartbeat runs every", "start": 1145.76, "duration": 4.0}, {"text": "single hour if you have the demon set", "start": 1147.44, "duration": 5.44}, {"text": "up. And this can be used to for example", "start": 1149.76, "duration": 4.56}, {"text": "check your social media every single", "start": 1152.88, "duration": 3.52}, {"text": "hour if you will have that set up. And", "start": 1154.32, "duration": 4.32}, {"text": "then coming down to soul. This just", "start": 1156.4, "duration": 6.159}, {"text": "defines like who is openclaw. And then", "start": 1158.64, "duration": 5.76}, {"text": "what is tools? I think of it as like a", "start": 1162.559, "duration": 4.561}, {"text": "scratch pad for the agent. So it", "start": 1164.4, "duration": 4.88}, {"text": "describes different tools that it", "start": 1167.12, "duration": 4.559}, {"text": "interacts with. That's not the most", "start": 1169.28, "duration": 5.04}, {"text": "important. But we also have user which", "start": 1171.679, "duration": 5.041}, {"text": "is quite important. That talks about me.", "start": 1174.32, "duration": 4.08}, {"text": "So you can see has my name, it has the", "start": 1176.72, "duration": 4.56}, {"text": "time zone, and then some notes on me and", "start": 1178.4, "duration": 5.92}, {"text": "some context. So there you have it for", "start": 1181.28, "duration": 5.12}, {"text": "our workspace. But this is not", "start": 1184.32, "duration": 3.92}, {"text": "everything. Of course, there are", "start": 1186.4, "duration": 3.84}, {"text": "different configs such as off profiles", "start": 1188.24, "duration": 4.16}, {"text": "JSON. These essentially give all of the", "start": 1190.24, "duration": 5.04}, {"text": "different parameters and arguments for", "start": 1192.4, "duration": 5.6}, {"text": "the agent itself. And while you can", "start": 1195.28, "duration": 5.04}, {"text": "modify these in the JSON directly, I", "start": 1198.0, "duration": 3.919}, {"text": "would recommend you do everything to the", "start": 1200.32, "duration": 3.2}, {"text": "terminal interface because you can", "start": 1201.919, "duration": 4.88}, {"text": "essentially access a config method which", "start": 1203.52, "duration": 6.56}, {"text": "changes these parameters for you. And", "start": 1206.799, "duration": 4.801}, {"text": "the reason that this is probably better", "start": 1210.08, "duration": 3.04}, {"text": "is because if you end up changing", "start": 1211.6, "duration": 3.04}, {"text": "something in the open call folder, the", "start": 1213.12, "duration": 3.76}, {"text": "risk is that you make some error that", "start": 1214.64, "duration": 5.2}, {"text": "breaks the agent. So I do recommend not", "start": 1216.88, "duration": 4.159}, {"text": "changing any of the values here", "start": 1219.84, "duration": 3.12}, {"text": "directly, but using as a reference to", "start": 1221.039, "duration": 3.921}, {"text": "see what are your current config values", "start": 1222.96, "duration": 4.16}, {"text": "if you ever want to check them. All", "start": 1224.96, "duration": 4.4}, {"text": "right, coming back here. As I mentioned,", "start": 1227.12, "duration": 4.72}, {"text": "you can back this up as a git repository", "start": 1229.36, "duration": 4.08}, {"text": "so that you have those agent", "start": 1231.84, "duration": 3.28}, {"text": "characteristics saved. And if we come", "start": 1233.44, "duration": 4.08}, {"text": "here into the documentation, you'll find", "start": 1235.12, "duration": 7.439}, {"text": "that right here. So right in this", "start": 1237.52, "duration": 6.88}, {"text": "section, we talk about initializing a", "start": 1242.559, "duration": 3.761}, {"text": "GitHub repository so that you can have", "start": 1244.4, "duration": 4.32}, {"text": "all of your agents files saved. And the", "start": 1246.32, "duration": 3.92}, {"text": "important thing here is that if you", "start": 1248.72, "duration": 5.199}, {"text": "switch devices, then you can still use", "start": 1250.24, "duration": 5.84}, {"text": "the same configuration by just pulling", "start": 1253.919, "duration": 5.12}, {"text": "this repo on your new device. Or if you", "start": 1256.08, "duration": 5.68}, {"text": "have this set up on multiple devices,", "start": 1259.039, "duration": 4.88}, {"text": "then you can have the same repository", "start": 1261.76, "duration": 5.039}, {"text": "which has a central source of truth for", "start": 1263.919, "duration": 5.521}, {"text": "all of your agent configurations. So", "start": 1266.799, "duration": 5.36}, {"text": "there you have it. Now let's jump back", "start": 1269.44, "duration": 7.44}, {"text": "out and start the first implementation", "start": 1272.159, "duration": 7.601}, {"text": "which is for pinchboard. And if we come", "start": 1276.88, "duration": 5.36}, {"text": "into the website, we can check out what", "start": 1279.76, "duration": 4.48}, {"text": "exactly it is. And essentially what I", "start": 1282.24, "duration": 5.2}, {"text": "built is mold book but for Twitter. So,", "start": 1284.24, "duration": 5.76}, {"text": "it's social AI for agents. The only", "start": 1287.44, "duration": 4.96}, {"text": "person on the platform right now is a", "start": 1290.0, "duration": 4.0}, {"text": "test account I made, but hopefully", "start": 1292.4, "duration": 2.96}, {"text": "through this course, we'll get some more", "start": 1294.0, "duration": 4.32}, {"text": "people out here tweeting. And all we", "start": 1295.36, "duration": 7.52}, {"text": "have to do is come take the URL of this", "start": 1298.32, "duration": 9.839}, {"text": "website and open up our agent to create", "start": 1302.88, "duration": 8.24}, {"text": "a account", "start": 1308.159, "duration": 5.76}, {"text": "on Pinchboard.", "start": 1311.12, "duration": 8.32}, {"text": "Let's say read the skills.md.", "start": 1313.919, "duration": 8.161}, {"text": "All right. So, as soon as we run this,", "start": 1319.44, "duration": 6.88}, {"text": "it should go into the website here,", "start": 1322.08, "duration": 7.2}, {"text": "which contains a skill.md. And this", "start": 1326.32, "duration": 5.2}, {"text": "gives all of the API information. And", "start": 1329.28, "duration": 5.04}, {"text": "then we'll have to most likely do the", "start": 1331.52, "duration": 4.8}, {"text": "Twitter verification like is the case", "start": 1334.32, "duration": 4.239}, {"text": "with multbook. And then we should be up", "start": 1336.32, "duration": 3.92}, {"text": "and running with our first tweet. Okay.", "start": 1338.559, "duration": 3.441}, {"text": "So, let's see. I'm registered. Let me", "start": 1340.24, "duration": 3.439}, {"text": "save my credentials. is pretty cool.", "start": 1342.0, "duration": 3.679}, {"text": "Done. Here's the rundown. All right.", "start": 1343.679, "duration": 3.761}, {"text": "Nova is on pinchboard. That's pretty", "start": 1345.679, "duration": 4.961}, {"text": "funny. Let me make this slightly bigger", "start": 1347.44, "duration": 6.0}, {"text": "and we'll read this together. So, here's", "start": 1350.64, "duration": 4.24}, {"text": "the following profile pending", "start": 1353.44, "duration": 3.359}, {"text": "verification. Terify there's one you", "start": 1354.88, "duration": 3.52}, {"text": "need to do, which is to open this link", "start": 1356.799, "duration": 2.561}, {"text": "and follow the instructions, which", "start": 1358.4, "duration": 5.2}, {"text": "involves posting the um verification", "start": 1359.36, "duration": 7.76}, {"text": "tweet. So, let's open this right away.", "start": 1363.6, "duration": 4.88}, {"text": "So here you can see I just made the", "start": 1367.12, "duration": 5.28}, {"text": "tweet and if I paste the URL we should", "start": 1368.48, "duration": 6.0}, {"text": "get the verification that Nova is now", "start": 1372.4, "duration": 4.08}, {"text": "active. So that's really cool. This was", "start": 1374.48, "duration": 3.76}, {"text": "actually just vive coded with Open Claw", "start": 1376.48, "duration": 3.52}, {"text": "as well. So it's funny that OpenClaw is", "start": 1378.24, "duration": 4.64}, {"text": "making OpenClaw apps. And then I'll just", "start": 1380.0, "duration": 8.64}, {"text": "say you're you're verified now. Send a", "start": 1382.88, "duration": 10.08}, {"text": "tweet to Celebrate. So at this point it", "start": 1388.64, "duration": 7.84}, {"text": "should have the authentification in", "start": 1392.96, "duration": 5.04}, {"text": "order to send tweets since it's been", "start": 1396.48, "duration": 5.36}, {"text": "verified. And there you go. So Nova is", "start": 1398.0, "duration": 5.36}, {"text": "live on pinchboard. Open file ambassador", "start": 1401.84, "duration": 3.199}, {"text": "fleshy hatch rate to mingle. Let's", "start": 1403.36, "duration": 5.439}, {"text": "actually check and see if all right it's", "start": 1405.039, "duration": 5.12}, {"text": "identified the other agent as well which", "start": 1408.799, "duration": 4.161}, {"text": "is really cool. But if I close this and", "start": 1410.159, "duration": 6.081}, {"text": "come back one step it should pop up as a", "start": 1412.96, "duration": 5.839}, {"text": "new tweet. So yeah there you go. Two", "start": 1416.24, "duration": 5.52}, {"text": "pinches have been added. And this was", "start": 1418.799, "duration": 5.36}, {"text": "how many seconds ago? 18 seconds ago.", "start": 1421.76, "duration": 3.84}, {"text": "And maybe it's going to add a comment,", "start": 1424.159, "duration": 3.361}, {"text": "too. Let's see what it does. If we come", "start": 1425.6, "duration": 4.72}, {"text": "back to our terminal. All right. Follow", "start": 1427.52, "duration": 4.72}, {"text": "didn't work. Maybe they're not verified.", "start": 1430.32, "duration": 3.599}, {"text": "So, that needs to be fixed. But anyways,", "start": 1432.24, "duration": 4.64}, {"text": "we did the first pinch and we clawed", "start": 1433.919, "duration": 4.961}, {"text": "Ocean's historic first pinch. And I", "start": 1436.88, "duration": 4.64}, {"text": "think clawed means retweet. But if I re", "start": 1438.88, "duration": 5.2}, {"text": "if I refresh this, what we do see? Okay,", "start": 1441.52, "duration": 4.24}, {"text": "we see the claw. Actually, it just means", "start": 1444.08, "duration": 4.4}, {"text": "like. So here you can see that uh we've", "start": 1445.76, "duration": 4.32}, {"text": "set this up and you can do this for", "start": 1448.48, "duration": 3.199}, {"text": "yourself. It's really simple. It will", "start": 1450.08, "duration": 4.16}, {"text": "just check the skill.md and then this", "start": 1451.679, "duration": 5.921}, {"text": "does everything in order to register and", "start": 1454.24, "duration": 6.64}, {"text": "create the API key on your behalf. So", "start": 1457.6, "duration": 6.079}, {"text": "coming back now to our course outline,", "start": 1460.88, "duration": 5.679}, {"text": "let's check and see what's next. And", "start": 1463.679, "duration": 4.24}, {"text": "this is the most fun part of the course", "start": 1466.559, "duration": 3.6}, {"text": "which is to set up a personal assistant.", "start": 1467.919, "duration": 4.401}, {"text": "And in this case, the personal assistant", "start": 1470.159, "duration": 5.681}, {"text": "is going to be set up through the same", "start": 1472.32, "duration": 6.32}, {"text": "configuration as in the docs themselves.", "start": 1475.84, "duration": 5.199}, {"text": "So to re-emphasize here, we need to be", "start": 1478.64, "duration": 6.24}, {"text": "very careful about the safety. And why?", "start": 1481.039, "duration": 5.041}, {"text": "Because you're putting your agent in a", "start": 1484.88, "duration": 2.399}, {"text": "position to run commands on your", "start": 1486.08, "duration": 3.28}, {"text": "machine, read files in your workspace,", "start": 1487.279, "duration": 4.481}, {"text": "and send messages back out to WhatsApp,", "start": 1489.36, "duration": 4.799}, {"text": "Telegram, Discord, etc. So we need to", "start": 1491.76, "duration": 4.24}, {"text": "start conservative, which is to say", "start": 1494.159, "duration": 4.88}, {"text": "always set the channels. WhatsApp allow", "start": 1496.0, "duration": 5.679}, {"text": "from such that you can only send to", "start": 1499.039, "duration": 4.321}, {"text": "certain channels. You don't ever want to", "start": 1501.679, "duration": 3.36}, {"text": "run open to the world on your personal", "start": 1503.36, "duration": 4.08}, {"text": "Mac and then use a dedicated WhatsApp", "start": 1505.039, "duration": 4.24}, {"text": "number for the assistant which I do not", "start": 1507.44, "duration": 3.04}, {"text": "have. So I'm going to be using my own", "start": 1509.279, "duration": 3.201}, {"text": "phone number. And there's also", "start": 1510.48, "duration": 4.079}, {"text": "heartbeats which you can set to zero", "start": 1512.48, "duration": 4.319}, {"text": "once you dis so that you can disable it", "start": 1514.559, "duration": 4.24}, {"text": "before you trust your system to be", "start": 1516.799, "duration": 4.401}, {"text": "working properly. But in any case, we", "start": 1518.799, "duration": 3.76}, {"text": "need to know to set this up with", "start": 1521.2, "duration": 3.92}, {"text": "OpenClaw and ideally a second phone", "start": 1522.559, "duration": 4.641}, {"text": "number. But in this case, we're not", "start": 1525.12, "duration": 3.6}, {"text": "going to do that strictly because I", "start": 1527.2, "duration": 4.079}, {"text": "don't have a second phone number. But", "start": 1528.72, "duration": 3.839}, {"text": "here, it's just going through the same", "start": 1531.279, "duration": 3.201}, {"text": "instructions that we did. And why is it", "start": 1532.559, "duration": 3.681}, {"text": "telling you to do a second phone number?", "start": 1534.48, "duration": 4.48}, {"text": "Well, it's because in order to have a", "start": 1536.24, "duration": 4.319}, {"text": "more seamless transaction, then you can", "start": 1538.96, "duration": 3.599}, {"text": "set up your bot as one phone number and", "start": 1540.559, "duration": 4.0}, {"text": "then yourself as a second. And then you", "start": 1542.559, "duration": 3.921}, {"text": "can send your bot a message, which will", "start": 1544.559, "duration": 5.521}, {"text": "then run code on your Mac. In this case,", "start": 1546.48, "duration": 4.88}, {"text": "with one phone number, it becomes", "start": 1550.08, "duration": 2.8}, {"text": "slightly muddled, but it is still", "start": 1551.36, "duration": 2.72}, {"text": "possible. So, that's what we're going to", "start": 1552.88, "duration": 3.12}, {"text": "set up. The first thing we need to do is", "start": 1554.08, "duration": 4.079}, {"text": "pair WhatsApp web, which is done through", "start": 1556.0, "duration": 4.72}, {"text": "the following command. Openclaw channels", "start": 1558.159, "duration": 4.961}, {"text": "login. So let's go ahead and run that.", "start": 1560.72, "duration": 5.12}, {"text": "Not here, but rather in our regular", "start": 1563.12, "duration": 5.919}, {"text": "terminal. So open claw channels login.", "start": 1565.84, "duration": 4.24}, {"text": "And this is when we're going to set up", "start": 1569.039, "duration": 2.401}, {"text": "our WhatsApp, which we could have done", "start": 1570.08, "duration": 3.44}, {"text": "at this at the quick start, but we're", "start": 1571.44, "duration": 3.76}, {"text": "doing this now instead. So you're going", "start": 1573.52, "duration": 3.44}, {"text": "to need your phone here. So I just", "start": 1575.2, "duration": 3.44}, {"text": "checked my config file, and for whatever", "start": 1576.96, "duration": 4.079}, {"text": "reason, WhatsApp was disabled. So,", "start": 1578.64, "duration": 4.639}, {"text": "you're going to need to run plugins", "start": 1581.039, "duration": 4.321}, {"text": "enable WhatsApp and also restart the", "start": 1583.279, "duration": 3.681}, {"text": "gateway. If this has been the same case", "start": 1585.36, "duration": 4.4}, {"text": "for you, if not, then even better. We'll", "start": 1586.96, "duration": 5.44}, {"text": "just be able to connect our WhatsApp in", "start": 1589.76, "duration": 5.519}, {"text": "order to connect and send messages. So,", "start": 1592.4, "duration": 5.2}, {"text": "this is why I have my phone. Let's come", "start": 1595.279, "duration": 7.601}, {"text": "ahead and now run the command for", "start": 1597.6, "duration": 7.6}, {"text": "channels login, which is going to ask", "start": 1602.88, "duration": 4.08}, {"text": "you to scan the QR code on your WhatsApp", "start": 1605.2, "duration": 4.88}, {"text": "phone. Okay. Boom. So, that's a massive", "start": 1606.96, "duration": 5.04}, {"text": "code. Let's see if it fits in the", "start": 1610.08, "duration": 3.28}, {"text": "screen. No, it doesn't. So, let's make", "start": 1612.0, "duration": 4.08}, {"text": "this slightly smaller. And then I'm just", "start": 1613.36, "duration": 4.4}, {"text": "going to come and scan this right now,", "start": 1616.08, "duration": 2.719}, {"text": "which is what you should do on your", "start": 1617.76, "duration": 4.96}, {"text": "phone as well. Okay. And", "start": 1618.799, "duration": 7.201}, {"text": "let's scan. And then it should be pretty", "start": 1622.72, "duration": 6.4}, {"text": "fast in terms of connecting once this is", "start": 1626.0, "duration": 4.72}, {"text": "done.", "start": 1629.12, "duration": 3.28}, {"text": "So, there you have it. It's now been", "start": 1630.72, "duration": 3.839}, {"text": "connected. And now if we open up the", "start": 1632.4, "duration": 6.72}, {"text": "open claw tui, let's see what we can do.", "start": 1634.559, "duration": 7.041}, {"text": "One thing that we still have to one", "start": 1639.12, "duration": 4.72}, {"text": "still one thing we still have to add is", "start": 1641.6, "duration": 5.199}, {"text": "if I close this terminal. We're going to", "start": 1643.84, "duration": 7.36}, {"text": "add this to our open claw JSON. And one", "start": 1646.799, "duration": 6.88}, {"text": "thing worth noting here is that if you", "start": 1651.2, "duration": 5.359}, {"text": "ever put your agent in a group chat,", "start": 1653.679, "duration": 5.921}, {"text": "there are very severe", "start": 1656.559, "duration": 4.881}, {"text": "security vulnerabilities because", "start": 1659.6, "duration": 3.92}, {"text": "essentially your bot has access to your", "start": 1661.44, "duration": 4.4}, {"text": "terminal. So if you have somebody in", "start": 1663.52, "duration": 4.56}, {"text": "that group chat who doesn't like you,", "start": 1665.84, "duration": 5.36}, {"text": "they can try to convince the bot to do", "start": 1668.08, "duration": 4.8}, {"text": "malicious code and run malicious code on", "start": 1671.2, "duration": 3.199}, {"text": "your computer. So just keep in mind that", "start": 1672.88, "duration": 2.88}, {"text": "you should probably never put this in a", "start": 1674.399, "duration": 3.441}, {"text": "group chat. Instead, it should just be a", "start": 1675.76, "duration": 3.519}, {"text": "one-to-one conversation with you in the", "start": 1677.84, "duration": 5.6}, {"text": "bot. So, if I open up a new session of", "start": 1679.279, "duration": 6.241}, {"text": "our terminal, I should be able to open", "start": 1683.44, "duration": 6.64}, {"text": "up a the open claw JSON. And then from", "start": 1685.52, "duration": 8.32}, {"text": "there, we can add our phone number. So,", "start": 1690.08, "duration": 6.4}, {"text": "coming here, usually this is done", "start": 1693.84, "duration": 5.6}, {"text": "automatically in the wizard for for", "start": 1696.48, "duration": 5.12}, {"text": "setting up, but I guess since we didn't", "start": 1699.44, "duration": 3.76}, {"text": "do at the very beginning, then we're", "start": 1701.6, "duration": 3.199}, {"text": "going to have to do this now on our own.", "start": 1703.2, "duration": 5.359}, {"text": "So coming down here, let's add the", "start": 1704.799, "duration": 7.36}, {"text": "channels. Okay, so a few problems there", "start": 1708.559, "duration": 6.0}, {"text": "with the commas, but now we have it", "start": 1712.159, "duration": 4.4}, {"text": "sorted out. And then that is my phone", "start": 1714.559, "duration": 4.641}, {"text": "number, right? And now we can come into", "start": 1716.559, "duration": 6.081}, {"text": "our TUI and try to send a message to", "start": 1719.2, "duration": 5.44}, {"text": "ourselves in this case and see what", "start": 1722.64, "duration": 4.96}, {"text": "happens. So I think that we have a", "start": 1724.64, "duration": 7.2}, {"text": "session open here. Hello. Can you send a", "start": 1727.6, "duration": 5.76}, {"text": "message", "start": 1731.84, "duration": 4.319}, {"text": "to this number? And let's see what it", "start": 1733.36, "duration": 4.319}, {"text": "says.", "start": 1736.159, "duration": 4.321}, {"text": "It might ask us which platform we want", "start": 1737.679, "duration": 6.24}, {"text": "to send it on. And let's see. Okay,", "start": 1740.48, "duration": 5.12}, {"text": "never mind. It's already been done. So,", "start": 1743.919, "duration": 4.721}, {"text": "if I come into my WhatsApp, let's check", "start": 1745.6, "duration": 5.199}, {"text": "and refresh. These are messages with", "start": 1748.64, "duration": 4.72}, {"text": "myself. And there you have it. You can", "start": 1750.799, "duration": 5.841}, {"text": "see that just a few minutes ago, we got", "start": 1753.36, "duration": 5.039}, {"text": "this. Hey Kian Snow, you're open call", "start": 1756.64, "duration": 3.039}, {"text": "ambassador reporting for doing on", "start": 1758.399, "duration": 2.88}, {"text": "WhatsApp. We're live and let's try to", "start": 1759.679, "duration": 7.761}, {"text": "respond. Hey, thanks for the message.", "start": 1761.279, "duration": 8.961}, {"text": "And let's see what it says in response.", "start": 1767.44, "duration": 5.599}, {"text": "The one thing worth noting here is Oh", "start": 1770.24, "duration": 5.36}, {"text": "yeah, there you go. Got a response. All", "start": 1773.039, "duration": 5.201}, {"text": "right. Want me to reply back to them or", "start": 1775.6, "duration": 3.92}, {"text": "is this just a test for the tutorial?", "start": 1778.24, "duration": 3.28}, {"text": "Okay, let's see. I would like you to", "start": 1779.52, "duration": 3.12}, {"text": "respond back to them. And I think it", "start": 1781.52, "duration": 3.36}, {"text": "does. Ah, here you go. Someone just", "start": 1782.64, "duration": 3.36}, {"text": "replied to the number saying, \"Hey,", "start": 1784.88, "duration": 3.12}, {"text": "thanks for the message.\" So, this is the", "start": 1786.0, "duration": 3.279}, {"text": "one thing, of course, when you're", "start": 1788.0, "duration": 2.48}, {"text": "sending messages to yourself, it gets", "start": 1789.279, "duration": 3.201}, {"text": "kind of muddy, which is why it's", "start": 1790.48, "duration": 4.24}, {"text": "recommended to have your bot on a", "start": 1792.48, "duration": 4.079}, {"text": "separate phone number. But once again,", "start": 1794.72, "duration": 3.76}, {"text": "you need two phone numbers to do that.", "start": 1796.559, "duration": 6.401}, {"text": "So, let me just say this is Ken.", "start": 1798.48, "duration": 12.96}, {"text": "Can you check if I have any outstanding", "start": 1802.96, "duration": 12.0}, {"text": "pull requests in my developer folder?", "start": 1811.44, "duration": 5.119}, {"text": "All right, so we sent this and if we", "start": 1814.96, "duration": 6.16}, {"text": "come here, it's going to respond to us", "start": 1816.559, "duration": 6.961}, {"text": "very shortly. Okay, so as you can see,", "start": 1821.12, "duration": 4.559}, {"text": "this is absolutely amazing. I asked it,", "start": 1823.52, "duration": 3.759}, {"text": "can you check if I have any outstanding", "start": 1825.679, "duration": 2.961}, {"text": "pull requests in my del folder? and", "start": 1827.279, "duration": 3.041}, {"text": "said, \"Hey, Ken, found five outstanding", "start": 1828.64, "duration": 2.96}, {"text": "pull requests, all in the factory", "start": 1830.32, "duration": 2.64}, {"text": "learning environment, two that are open,", "start": 1831.6, "duration": 3.199}, {"text": "three that are draft, no open PRs in any", "start": 1832.96, "duration": 3.92}, {"text": "of the other repos.\" And yeah, I got the", "start": 1834.799, "duration": 3.76}, {"text": "results, which is which was then", "start": 1836.88, "duration": 3.919}, {"text": "forwarded them to me. You can see it's", "start": 1838.559, "duration": 4.48}, {"text": "just repeating itself, but otherwise the", "start": 1840.799, "duration": 5.841}, {"text": "developers repo is clean and okay, so", "start": 1843.039, "duration": 4.961}, {"text": "something else I wanted to do is to set", "start": 1846.64, "duration": 4.399}, {"text": "up a discord bot. So I just asked it how", "start": 1848.0, "duration": 5.44}, {"text": "we can go ahead and do that because this", "start": 1851.039, "duration": 4.88}, {"text": "is another thing which I'm pretty", "start": 1853.44, "duration": 4.56}, {"text": "interested in doing. And you could do", "start": 1855.919, "duration": 4.081}, {"text": "this in terms of setup during the", "start": 1858.0, "duration": 4.64}, {"text": "onboarding which might have been faster", "start": 1860.0, "duration": 4.24}, {"text": "but let's look at the instructions that", "start": 1862.64, "duration": 3.279}, {"text": "it gives us here. So we need to go to", "start": 1864.24, "duration": 3.52}, {"text": "discord create new application give it a", "start": 1865.919, "duration": 4.081}, {"text": "name then get go to the bot tab click", "start": 1867.76, "duration": 4.159}, {"text": "reset token copy the bot token under", "start": 1870.0, "duration": 3.6}, {"text": "privilege gateway intents enable message", "start": 1871.919, "duration": 4.401}, {"text": "content intent then generate the", "start": 1873.6, "duration": 5.6}, {"text": "following scope etc etc copy the info", "start": 1876.32, "duration": 4.64}, {"text": "you and add the bot to your server and", "start": 1879.2, "duration": 3.76}, {"text": "then step two give me the bot token and", "start": 1880.96, "duration": 4.0}, {"text": "guild channel info once you have the bot", "start": 1882.96, "duration": 4.319}, {"text": "token the server guild ID and the", "start": 1884.96, "duration": 4.24}, {"text": "channel ids you want me in and then it", "start": 1887.279, "duration": 4.481}, {"text": "can configure the open channel clause", "start": 1889.2, "duration": 4.479}, {"text": "discord channel in order to be live in", "start": 1891.76, "duration": 4.639}, {"text": "the server So right now I'm going to go", "start": 1893.679, "duration": 6.081}, {"text": "ahead and create a server as well as a", "start": 1896.399, "duration": 6.64}, {"text": "bot and then give the following tokens", "start": 1899.76, "duration": 8.159}, {"text": "to the openclaw assistant. Okay, so I", "start": 1903.039, "duration": 10.48}, {"text": "added my Discord bot token to myv file", "start": 1907.919, "duration": 9.201}, {"text": "or rather variable and here's a server", "start": 1913.519, "duration": 7.28}, {"text": "guild ID with the channel ID and let's", "start": 1917.12, "duration": 6.72}, {"text": "see what open clock comes up with. So in", "start": 1920.799, "duration": 4.321}, {"text": "theory, it should be able to join the", "start": 1923.84, "duration": 2.88}, {"text": "channel and then I can have a bot in my", "start": 1925.12, "duration": 4.24}, {"text": "own Discord server. And then once again,", "start": 1926.72, "duration": 4.48}, {"text": "the risk here is that if you have this", "start": 1929.36, "duration": 4.96}, {"text": "set up such that your bot has access to", "start": 1931.2, "duration": 4.8}, {"text": "your computer, then anybody on that", "start": 1934.32, "duration": 3.839}, {"text": "Discord server could text that bot and", "start": 1936.0, "duration": 5.2}, {"text": "tell them, \"Yeah, I do something bad on", "start": 1938.159, "duration": 4.721}, {"text": "this computer.\" And you don't want that.", "start": 1941.2, "duration": 3.839}, {"text": "So be careful when you do this. If you", "start": 1942.88, "duration": 4.399}, {"text": "want this to just be a Discord DM, then", "start": 1945.039, "duration": 6.961}, {"text": "you still need to have a server. It", "start": 1947.279, "duration": 5.76}, {"text": "seems that you can't do this through a", "start": 1952.0, "duration": 3.6}, {"text": "DM strictly because it's a bot. So, what", "start": 1953.039, "duration": 4.161}, {"text": "they say in the documentation is that", "start": 1955.6, "duration": 3.76}, {"text": "you need to make a server and then just", "start": 1957.2, "duration": 4.16}, {"text": "have that bot as the only other member", "start": 1959.36, "duration": 4.24}, {"text": "and then effectively you've made a DM,", "start": 1961.36, "duration": 3.919}, {"text": "right? Um, create a private server. You", "start": 1963.6, "duration": 4.0}, {"text": "just want DMs. Okay. So, let's check on", "start": 1965.279, "duration": 5.52}, {"text": "the status of the run. It says now I see", "start": 1967.6, "duration": 4.559}, {"text": "channels discord need enabled. True", "start": 1970.799, "duration": 3.521}, {"text": "rather than just being in plugins. So,", "start": 1972.159, "duration": 4.0}, {"text": "it's going to try to add it. Okay. So,", "start": 1974.32, "duration": 3.599}, {"text": "there you go. It says discarded and the", "start": 1976.159, "duration": 3.841}, {"text": "gateway is restarting. So, we've added", "start": 1977.919, "duration": 4.48}, {"text": "the gateway", "start": 1980.0, "duration": 7.84}, {"text": "information as well as some extra", "start": 1982.399, "duration": 8.88}, {"text": "documentation on Discord, which it read", "start": 1987.84, "duration": 5.199}, {"text": "in the tools section in order to get", "start": 1991.279, "duration": 4.4}, {"text": "more information on how to effectively", "start": 1993.039, "duration": 5.36}, {"text": "add the configuration. And then it says", "start": 1995.679, "duration": 4.321}, {"text": "the bot should be connecting Discord now", "start": 1998.399, "duration": 2.801}, {"text": "to make sure it only responds in general", "start": 2000.0, "duration": 3.12}, {"text": "and requires mention in that channel.", "start": 2001.2, "duration": 3.92}, {"text": "You can configure guild rules later. For", "start": 2003.12, "duration": 3.679}, {"text": "now, the bot is live with the Discord", "start": 2005.12, "duration": 3.52}, {"text": "plug enabled, bot token set, and gateway", "start": 2006.799, "duration": 3.76}, {"text": "restarting. Make sure your bot has been", "start": 2008.64, "duration": 2.879}, {"text": "invited server with the right", "start": 2010.559, "duration": 2.641}, {"text": "permissions, etc. Once it's in line,", "start": 2011.519, "duration": 3.201}, {"text": "once online, I can send a message to", "start": 2013.2, "duration": 4.319}, {"text": "general. Want me to try? Okay, so I've", "start": 2014.72, "duration": 4.559}, {"text": "gone ahead and added the bot here.", "start": 2017.519, "duration": 3.04}, {"text": "According to the permissions, I said, it", "start": 2019.279, "duration": 3.28}, {"text": "can read messages and respond. So, let's", "start": 2020.559, "duration": 4.401}, {"text": "say at kios,", "start": 2022.559, "duration": 6.161}, {"text": "hey, who are you?", "start": 2024.96, "duration": 6.48}, {"text": "And let's see what the response is. And", "start": 2028.72, "duration": 5.439}, {"text": "we can also come into cursor and see if", "start": 2031.44, "duration": 6.88}, {"text": "that causes anything to happen as well.", "start": 2034.159, "duration": 5.601}, {"text": "All right, it says once the bot joins,", "start": 2038.32, "duration": 2.64}, {"text": "it should be able to see and respond in", "start": 2039.76, "duration": 3.68}, {"text": "general. Let me know when it's in. Okay,", "start": 2040.96, "duration": 4.4}, {"text": "so it's probably thinking right now and", "start": 2043.44, "duration": 4.479}, {"text": "going to respond shortly to the message", "start": 2045.36, "duration": 5.039}, {"text": "that I sent. If we come back, we see", "start": 2047.919, "duration": 4.801}, {"text": "that there is still no response. But if", "start": 2050.399, "duration": 5.121}, {"text": "we wait a sec, it should boot up. Okay,", "start": 2052.72, "duration": 5.679}, {"text": "and here you go. I had some issues with", "start": 2055.52, "duration": 5.52}, {"text": "the token", "start": 2058.399, "duration": 4.641}, {"text": "on my Discord bot and I just reset it", "start": 2061.04, "duration": 5.68}, {"text": "and now it works. So coming into Safari,", "start": 2063.04, "duration": 6.879}, {"text": "let's ask it a similar question. Okay.", "start": 2066.72, "duration": 6.159}, {"text": "Hey Nova,", "start": 2069.919, "duration": 7.601}, {"text": "what should I ask it this time? How many", "start": 2072.879, "duration": 7.76}, {"text": "GitHub repos", "start": 2077.52, "duration": 8.079}, {"text": "does Kon have in his developer", "start": 2080.639, "duration": 7.44}, {"text": "directory? And let's see if this works.", "start": 2085.599, "duration": 4.161}, {"text": "I'm not sure if Discord has the same", "start": 2088.079, "duration": 3.84}, {"text": "rights as", "start": 2089.76, "duration": 4.879}, {"text": "what's it called? WhatsApp. So, this may", "start": 2091.919, "duration": 5.281}, {"text": "actually not work, but it's worth giving", "start": 2094.639, "duration": 6.161}, {"text": "it a shot because you could see that if", "start": 2097.2, "duration": 5.2}, {"text": "somebody can ask the same question of", "start": 2100.8, "duration": 3.76}, {"text": "your bot, then there could be security", "start": 2102.4, "duration": 5.36}, {"text": "vulnerabilities. And I may or may not", "start": 2104.56, "duration": 5.519}, {"text": "have to tag the bot when I send the", "start": 2107.76, "duration": 4.48}, {"text": "message. So, let's just do that in case", "start": 2110.079, "duration": 4.881}, {"text": "it's necessary. I'm not sure if it is.", "start": 2112.24, "duration": 5.76}, {"text": "And wait for the response. Okay. So, it", "start": 2114.96, "duration": 5.76}, {"text": "seems that you need to have the", "start": 2118.0, "duration": 5.2}, {"text": "reference in the message itself. I was", "start": 2120.72, "duration": 4.8}, {"text": "messaging it and then sending the", "start": 2123.2, "duration": 4.159}, {"text": "reference so it wasn't working. But here", "start": 2125.52, "duration": 3.68}, {"text": "you go. You've got 30 gig repos and", "start": 2127.359, "duration": 3.281}, {"text": "developer. Some highlights I spotted", "start": 2129.2, "duration": 4.879}, {"text": "open obviously pietor mog factory", "start": 2130.64, "duration": 4.719}, {"text": "learning environment fun one your person", "start": 2134.079, "duration": 4.321}, {"text": "site and the hasll massively open online", "start": 2135.359, "duration": 6.0}, {"text": "course eclectic taste. So as you can see", "start": 2138.4, "duration": 5.04}, {"text": "it does have access to your entire root", "start": 2141.359, "duration": 5.521}, {"text": "directory even through discord. So this", "start": 2143.44, "duration": 5.52}, {"text": "is once again emphasizing the importance", "start": 2146.88, "duration": 5.12}, {"text": "of having this either on a private", "start": 2148.96, "duration": 6.56}, {"text": "discord or on a virtual private server", "start": 2152.0, "duration": 5.92}, {"text": "where all the information that is there", "start": 2155.52, "duration": 4.64}, {"text": "is not critical to you. Okay. So now", "start": 2157.92, "duration": 4.8}, {"text": "that we have the discord set up, we've", "start": 2160.16, "duration": 4.08}, {"text": "officially completed the personal", "start": 2162.72, "duration": 3.44}, {"text": "assistance section of the course and we", "start": 2164.24, "duration": 4.879}, {"text": "can move on to skills which we can", "start": 2166.16, "duration": 6.24}, {"text": "discuss in detail. First of all, agent", "start": 2169.119, "duration": 7.201}, {"text": "skills are in a specific folder", "start": 2172.4, "duration": 7.12}, {"text": "directory with each skill having a", "start": 2176.32, "duration": 6.48}, {"text": "skill.md file with a YAML front matter", "start": 2179.52, "duration": 5.68}, {"text": "plus instructions as the config teaching", "start": 2182.8, "duration": 4.88}, {"text": "the agent how to use tools. So coming", "start": 2185.2, "duration": 6.879}, {"text": "into my example in the open claw if we", "start": 2187.68, "duration": 9.679}, {"text": "open up our file reader here", "start": 2192.079, "duration": 8.801}, {"text": "then we can see that in our workspace we", "start": 2197.359, "duration": 7.201}, {"text": "see all of the skills that are added.", "start": 2200.88, "duration": 5.68}, {"text": "So, Apple Notes one password. If we look", "start": 2204.56, "duration": 3.84}, {"text": "at Apple Notes, we'll see that it", "start": 2206.56, "duration": 4.32}, {"text": "manages Apple notes via the memo CLI and", "start": 2208.4, "duration": 5.439}, {"text": "it gives the kind of description of the", "start": 2210.88, "duration": 6.0}, {"text": "API and how it interacts with Apple", "start": 2213.839, "duration": 5.28}, {"text": "Notes. You can see that here. Bird is", "start": 2216.88, "duration": 5.92}, {"text": "for Twitter. So, a bunch of different", "start": 2219.119, "duration": 5.601}, {"text": "descriptions on how to tweet, make", "start": 2222.8, "duration": 4.96}, {"text": "threads, retweet, etc. So, this is a", "start": 2224.72, "duration": 4.16}, {"text": "really helpful one if you don't want to", "start": 2227.76, "duration": 3.52}, {"text": "go on Twitter and see all the slop, but", "start": 2228.88, "duration": 4.16}, {"text": "you still want to make a tweet or do", "start": 2231.28, "duration": 4.48}, {"text": "something in that alley. And the list", "start": 2233.04, "duration": 5.039}, {"text": "goes on and on and on. One that's", "start": 2235.76, "duration": 4.48}, {"text": "interesting is Himalaya because it's for", "start": 2238.079, "duration": 6.081}, {"text": "sending emails and you can read, write,", "start": 2240.24, "duration": 6.24}, {"text": "reply, forward, search, etc. This is", "start": 2244.16, "duration": 4.32}, {"text": "another cool one. And there's nano", "start": 2246.48, "duration": 4.08}, {"text": "banana as well if you want to make", "start": 2248.48, "duration": 5.28}, {"text": "images. So, now that we know kind of the", "start": 2250.56, "duration": 5.76}, {"text": "overall format, let's come back here.", "start": 2253.76, "duration": 4.88}, {"text": "The per agent skills live in the skills", "start": 2256.32, "duration": 5.36}, {"text": "for that agent only. And then as we will", "start": 2258.64, "duration": 6.88}, {"text": "discuss in section six, there are", "start": 2261.68, "duration": 6.88}, {"text": "multiple agents that you can create. So", "start": 2265.52, "duration": 5.76}, {"text": "that will be in the skill set agent", "start": 2268.56, "duration": 5.279}, {"text": "only. But if there's a shared skills,", "start": 2271.28, "duration": 4.64}, {"text": "then it will just exist in the", "start": 2273.839, "duration": 3.601}, {"text": "openclaw/skills", "start": 2275.92, "duration": 3.36}, {"text": "and they're really visible to all agents", "start": 2277.44, "duration": 3.919}, {"text": "on the same machine. Another cool thing", "start": 2279.28, "duration": 3.36}, {"text": "is that you can make them user", "start": 2281.359, "duration": 3.361}, {"text": "invocable, which means that you can call", "start": 2282.64, "duration": 4.64}, {"text": "them with the slash command. So right", "start": 2284.72, "duration": 6.08}, {"text": "now, if I go here and then do skill,", "start": 2287.28, "duration": 5.44}, {"text": "right, you can run a skill by name, but", "start": 2290.8, "duration": 3.6}, {"text": "since we have none of them set up to be", "start": 2292.72, "duration": 3.28}, {"text": "this way, there won't actually be any", "start": 2294.4, "duration": 3.679}, {"text": "skills run, but that is also another", "start": 2296.0, "duration": 4.48}, {"text": "parameter that you can instantiate. And", "start": 2298.079, "duration": 4.721}, {"text": "then there's token impact, which is just", "start": 2300.48, "duration": 4.56}, {"text": "for interest sake. If you have more than", "start": 2302.8, "duration": 4.64}, {"text": "one skill, then you already add", "start": 2305.04, "duration": 4.559}, {"text": "approximately 97 characters to the", "start": 2307.44, "duration": 4.72}, {"text": "system prompt. And then it's roughly 24", "start": 2309.599, "duration": 4.561}, {"text": "tokens per skill that's added based on", "start": 2312.16, "duration": 5.679}, {"text": "the length and the size of the skill.", "start": 2314.16, "duration": 5.6}, {"text": "Next, we have Clawhub, which you can", "start": 2317.839, "duration": 3.361}, {"text": "kind of think as pip, which is the", "start": 2319.76, "duration": 3.44}, {"text": "Python package registry, but in this", "start": 2321.2, "duration": 5.36}, {"text": "case for claw skills. So, it's just at", "start": 2323.2, "duration": 5.2}, {"text": "clawhub.com. You can you can install", "start": 2326.56, "duration": 3.6}, {"text": "with clawhub install just like pip", "start": 2328.4, "duration": 4.4}, {"text": "install. But one thing worth noting is", "start": 2330.16, "duration": 4.56}, {"text": "that you should treat third party skills", "start": 2332.8, "duration": 4.88}, {"text": "as untrusted, which is to say read them", "start": 2334.72, "duration": 6.24}, {"text": "before enabling and make sure that it's", "start": 2337.68, "duration": 6.88}, {"text": "not having any imprecise or potentially", "start": 2340.96, "duration": 6.56}, {"text": "malicious contents. And even though", "start": 2344.56, "duration": 5.92}, {"text": "there already is a email skill, I want", "start": 2347.52, "duration": 5.44}, {"text": "to write one right now just to show you", "start": 2350.48, "duration": 4.879}, {"text": "guys that it's really simple. So I'm", "start": 2352.96, "duration": 4.56}, {"text": "going to ask OpenClot to write an email", "start": 2355.359, "duration": 8.72}, {"text": "skill using simple Python that sends an", "start": 2357.52, "duration": 11.52}, {"text": "email to myself which is this email with", "start": 2364.079, "duration": 7.601}, {"text": "the following", "start": 2369.04, "duration": 7.28}, {"text": "bars which are the SMTP variables. So", "start": 2371.68, "duration": 7.439}, {"text": "these two variables are usually your", "start": 2376.32, "duration": 4.56}, {"text": "password and your email. But if you have", "start": 2379.119, "duration": 4.401}, {"text": "two-actor authentication, then the SMTP", "start": 2380.88, "duration": 5.199}, {"text": "password, SMTP password is something", "start": 2383.52, "duration": 5.92}, {"text": "else which you must get from this link", "start": 2386.079, "duration": 6.561}, {"text": "in Google if you're using Gmail. And", "start": 2389.44, "duration": 4.639}, {"text": "right now we're going to write the skill", "start": 2392.64, "duration": 4.0}, {"text": "and see what happens. In essence, once", "start": 2394.079, "duration": 4.561}, {"text": "the skill is written, we can simply call", "start": 2396.64, "duration": 4.4}, {"text": "it and then it will invoke the skill to", "start": 2398.64, "duration": 4.719}, {"text": "send the email. This one of course being", "start": 2401.04, "duration": 4.88}, {"text": "somewhat frivolous but you can imagine", "start": 2403.359, "duration": 5.041}, {"text": "that you can get skills which automate", "start": 2405.92, "duration": 5.04}, {"text": "an entire workflow and save you lots of", "start": 2408.4, "duration": 4.4}, {"text": "time. All right. So we can see the", "start": 2410.96, "duration": 5.52}, {"text": "output. We ran a few different scripts", "start": 2412.8, "duration": 7.279}, {"text": "and wrote the following skills. Send", "start": 2416.48, "duration": 5.28}, {"text": "email.py PI which is simple Python noted", "start": 2420.079, "duration": 3.601}, {"text": "dependencies beyond standard library and", "start": 2421.76, "duration": 4.64}, {"text": "it uses the SMTP email plus password", "start": 2423.68, "duration": 5.52}, {"text": "which I have set up with the default re", "start": 2426.4, "duration": 4.959}, {"text": "recipient being myself plain text and", "start": 2429.2, "duration": 4.0}, {"text": "HTML emails is what it supports and then", "start": 2431.359, "duration": 3.921}, {"text": "added the skills to the open clause", "start": 2433.2, "duration": 6.639}, {"text": "custom skills directory. So let's go", "start": 2435.28, "duration": 9.36}, {"text": "first and see where exactly that has", "start": 2439.839, "duration": 7.041}, {"text": "been saved which should be oh it should", "start": 2444.64, "duration": 4.32}, {"text": "be right here. So this is in a sandbox", "start": 2446.88, "duration": 3.84}, {"text": "environment which I defined previously.", "start": 2448.96, "duration": 3.76}, {"text": "So it shouldn't be there. So if we come", "start": 2450.72, "duration": 3.359}, {"text": "here into the terminal, we can see that", "start": 2452.72, "duration": 4.0}, {"text": "the email has been saved with the script", "start": 2454.079, "duration": 4.321}, {"text": "and essentially what it says is send", "start": 2456.72, "duration": 4.16}, {"text": "emails via Gmail SMTP. This is once", "start": 2458.4, "duration": 4.8}, {"text": "again the YAML front header that I was", "start": 2460.88, "duration": 3.52}, {"text": "talking about which is kind of acting as", "start": 2463.2, "duration": 4.639}, {"text": "a config and it will just send the email", "start": 2464.4, "duration": 6.4}, {"text": "in this manner. So the only thing left", "start": 2467.839, "duration": 4.961}, {"text": "is to try it and see if whether or not", "start": 2470.8, "duration": 4.96}, {"text": "it works. So if we come back here, yes,", "start": 2472.8, "duration": 8.799}, {"text": "test it by sending an email saying hi.", "start": 2475.76, "duration": 7.44}, {"text": "Okay, so if we send this email to", "start": 2481.599, "duration": 4.24}, {"text": "ourself, then it should still come up in", "start": 2483.2, "duration": 6.399}, {"text": "our inbox. So let's first wait for it to", "start": 2485.839, "duration": 6.321}, {"text": "send and then check our inbox. All", "start": 2489.599, "duration": 4.24}, {"text": "right, email send. Check your Gmail. You", "start": 2492.16, "duration": 2.959}, {"text": "should have a message from Nova. We're", "start": 2493.839, "duration": 3.361}, {"text": "officially four channels deep now. Web", "start": 2495.119, "duration": 3.681}, {"text": "chat, WhatsApp, Discord, and email.", "start": 2497.2, "duration": 5.76}, {"text": "That's really hilarious. So, let us go", "start": 2498.8, "duration": 8.319}, {"text": "ahead and open up the Gmail here with", "start": 2502.96, "duration": 6.159}, {"text": "Safari. Okay, there you go. Yeah. Hey,", "start": 2507.119, "duration": 4.641}, {"text": "from Nova. Let's see what it said in", "start": 2509.119, "duration": 5.281}, {"text": "full detail with the emojis, too. This", "start": 2511.76, "duration": 4.0}, {"text": "is Nova, your open call ambassador", "start": 2514.4, "duration": 3.12}, {"text": "sending my very first email. Reverse", "start": 2515.76, "duration": 4.319}, {"text": "multi channel now. As was said in the", "start": 2517.52, "duration": 5.04}, {"text": "chat. So, that is hilarious that it", "start": 2520.079, "duration": 6.0}, {"text": "actually works. And I think that about", "start": 2522.56, "duration": 6.24}, {"text": "does it for skills. So, I wrote an email", "start": 2526.079, "duration": 4.881}, {"text": "skill, but of course, the real power", "start": 2528.8, "duration": 3.84}, {"text": "here is in using these preset skills", "start": 2530.96, "duration": 4.48}, {"text": "that come with OpenClaw because they're", "start": 2532.64, "duration": 4.88}, {"text": "all very well written and very rigorous.", "start": 2535.44, "duration": 4.24}, {"text": "Once again, the Obsidian skill, Google", "start": 2537.52, "duration": 4.4}, {"text": "Gemini skill, etc. So, I definely I", "start": 2539.68, "duration": 3.6}, {"text": "definitely recommend just reading", "start": 2541.92, "duration": 2.399}, {"text": "through a bunch of those skills and", "start": 2543.28, "duration": 2.96}, {"text": "seeing which ones work best with your", "start": 2544.319, "duration": 4.641}, {"text": "workflow. And one thing that I wanted to", "start": 2546.24, "duration": 4.56}, {"text": "highlight as well is let's just try to", "start": 2548.96, "duration": 5.119}, {"text": "do this with the slashskll invocation", "start": 2550.8, "duration": 6.24}, {"text": "and see what it does. I haven't tried", "start": 2554.079, "duration": 6.081}, {"text": "this myself yet, but it should in theory", "start": 2557.04, "duration": 5.36}, {"text": "do something. All right, so it looks", "start": 2560.16, "duration": 4.64}, {"text": "like when you do the hashtag skill or", "start": 2562.4, "duration": 4.08}, {"text": "slash skill rather, it just does the", "start": 2564.8, "duration": 3.44}, {"text": "exact same thing. Maybe it just gives a", "start": 2566.48, "duration": 2.96}, {"text": "more thorough prompt that the agent", "start": 2568.24, "duration": 3.2}, {"text": "doesn't exactly not invoke the skill.", "start": 2569.44, "duration": 4.32}, {"text": "And if we come back here, we can see", "start": 2571.44, "duration": 4.879}, {"text": "quick hello and check it out. Hey Kian,", "start": 2573.76, "duration": 4.079}, {"text": "just testing the skill. Send email", "start": 2576.319, "duration": 4.241}, {"text": "command. No reporting for duty. Boom. So", "start": 2577.839, "duration": 6.801}, {"text": "if we close not this but rather this", "start": 2580.56, "duration": 6.799}, {"text": "Safari tab then we can now move on to", "start": 2584.64, "duration": 6.24}, {"text": "the multi- aent case and read this.", "start": 2587.359, "duration": 5.201}, {"text": "So", "start": 2590.88, "duration": 3.76}, {"text": "coming into the course and going to", "start": 2592.56, "duration": 4.96}, {"text": "multi- aent we can see that multi- aent", "start": 2594.64, "duration": 4.4}, {"text": "is useful for having different personas", "start": 2597.52, "duration": 4.559}, {"text": "permissions workspaces etc. And for each", "start": 2599.04, "duration": 5.36}, {"text": "agent you can have a workspace session", "start": 2602.079, "duration": 4.321}, {"text": "authentication profile sandbox and tool", "start": 2604.4, "duration": 4.64}, {"text": "policy that is different. So let's just", "start": 2606.4, "duration": 4.8}, {"text": "do this through an example. And I", "start": 2609.04, "duration": 7.92}, {"text": "believe that we can not add any agents", "start": 2611.2, "duration": 9.36}, {"text": "from the TUI. Instead, we have to quit", "start": 2616.96, "duration": 5.68}, {"text": "and then do it the old fashioned way as", "start": 2620.56, "duration": 5.44}, {"text": "a command. Open CL agent add work as our", "start": 2622.64, "duration": 6.64}, {"text": "example here. So once this is added,", "start": 2626.0, "duration": 6.4}, {"text": "we'll have a second agent in our", "start": 2629.28, "duration": 5.52}, {"text": "authentification directory.", "start": 2632.4, "duration": 3.76}, {"text": "And then it's going to ask us for the", "start": 2634.8, "duration": 3.44}, {"text": "directory that we're gonna put it under.", "start": 2636.16, "duration": 4.72}, {"text": "I may have already made one under", "start": 2638.24, "duration": 4.079}, {"text": "workspace test work. So I'll just do", "start": 2640.88, "duration": 4.4}, {"text": "this and see what happens. Oh, looks", "start": 2642.319, "duration": 5.04}, {"text": "like it's fine. Okay. Configure the", "start": 2645.28, "duration": 5.2}, {"text": "model for this agent now. Yes. So we're", "start": 2647.359, "duration": 6.0}, {"text": "going to use anthropic and we're just", "start": 2650.48, "duration": 6.48}, {"text": "going to use the SK ant token as before", "start": 2653.359, "duration": 6.72}, {"text": "that we've used. And then no, we're not", "start": 2656.96, "duration": 5.04}, {"text": "going to continue the task now. And", "start": 2660.079, "duration": 4.161}, {"text": "there you go. So everything's done. And", "start": 2662.0, "duration": 9.44}, {"text": "then now if I do um open claw agents", "start": 2664.24, "duration": 9.28}, {"text": "h there should be a method for listing", "start": 2671.44, "duration": 3.84}, {"text": "the agents that we have and we should", "start": 2673.52, "duration": 4.88}, {"text": "now have a default agent and a work", "start": 2675.28, "duration": 6.24}, {"text": "agent. So it's let's just list", "start": 2678.4, "duration": 6.32}, {"text": "and checking this out. Right? We have", "start": 2681.52, "duration": 5.68}, {"text": "work and main. So this is really cool.", "start": 2684.72, "duration": 4.399}, {"text": "We have the identity set up here for", "start": 2687.2, "duration": 6.24}, {"text": "nova workspace. Workspace is this. And", "start": 2689.119, "duration": 6.0}, {"text": "then we don't have any specific routing", "start": 2693.44, "duration": 3.679}, {"text": "rules. Then the workspace for here is", "start": 2695.119, "duration": 4.801}, {"text": "this for our work agent. And then now if", "start": 2697.119, "duration": 4.801}, {"text": "we open up the open claw terminal user", "start": 2699.92, "duration": 5.12}, {"text": "interface, we can define our work agent", "start": 2701.92, "duration": 5.439}, {"text": "by using the agents command within the", "start": 2705.04, "duration": 5.92}, {"text": "TY. So if we do slash agents, we'll be", "start": 2707.359, "duration": 6.48}, {"text": "able to switch agents. So right now", "start": 2710.96, "duration": 5.44}, {"text": "we're on default. If I do the arrow key", "start": 2713.839, "duration": 4.561}, {"text": "down and click work, then it's going to", "start": 2716.4, "duration": 3.84}, {"text": "open up a new session. And I'm going to", "start": 2718.4, "duration": 3.679}, {"text": "say hello,", "start": 2720.24, "duration": 5.68}, {"text": "you are my work agent. And it should be", "start": 2722.079, "duration": 5.52}, {"text": "a completely new person. It shouldn't", "start": 2725.92, "duration": 4.32}, {"text": "have any context from Nova because yeah,", "start": 2727.599, "duration": 4.801}, {"text": "it just came online. So there you go.", "start": 2730.24, "duration": 5.04}, {"text": "Now it's asking me for the added", "start": 2732.4, "duration": 5.04}, {"text": "contact. And this is really cool because", "start": 2735.28, "duration": 3.68}, {"text": "imagine you're at work and you literally", "start": 2737.44, "duration": 3.28}, {"text": "have a agent which is completely", "start": 2738.96, "duration": 3.68}, {"text": "specified with your Slack, with your", "start": 2740.72, "duration": 4.0}, {"text": "email integrations, with everything. And", "start": 2742.64, "duration": 3.52}, {"text": "you have that set up so that everything", "start": 2744.72, "duration": 3.359}, {"text": "you do at work is automated. And then", "start": 2746.16, "duration": 3.84}, {"text": "once you get home, you switch. You just", "start": 2748.079, "duration": 6.321}, {"text": "go slash agents right here. You switch,", "start": 2750.0, "duration": 7.359}, {"text": "you forget about work, hop into main,", "start": 2754.4, "duration": 4.959}, {"text": "and then go do the stuff that you really", "start": 2757.359, "duration": 4.561}, {"text": "like doing. So that is really cool use", "start": 2759.359, "duration": 5.201}, {"text": "case for agents and just shows you the", "start": 2761.92, "duration": 5.679}, {"text": "versatility of OpenCloud. And closing", "start": 2764.56, "duration": 6.799}, {"text": "this now, we can see that in each access", "start": 2767.599, "duration": 6.961}, {"text": "profile, you really can modify it to", "start": 2771.359, "duration": 5.121}, {"text": "your heart's desire. One thing that I", "start": 2774.56, "duration": 3.279}, {"text": "didn't mention up to now is the", "start": 2776.48, "duration": 3.119}, {"text": "sandboxing because that's part eight of", "start": 2777.839, "duration": 3.841}, {"text": "our course. But you can have one agent", "start": 2779.599, "duration": 4.081}, {"text": "that's sandbox and another that isn't.", "start": 2781.68, "duration": 3.52}, {"text": "Meaning that if you have some", "start": 2783.68, "duration": 3.6}, {"text": "potentially high-risk setups for a", "start": 2785.2, "duration": 3.52}, {"text": "specific agent, then you can have that", "start": 2787.28, "duration": 2.72}, {"text": "on a docker container such that it does", "start": 2788.72, "duration": 3.04}, {"text": "not have access to your entire to your", "start": 2790.0, "duration": 5.76}, {"text": "file directory at all. And", "start": 2791.76, "duration": 6.64}, {"text": "there you have it. So moving on to", "start": 2795.76, "duration": 4.319}, {"text": "security, we're just going to discuss", "start": 2798.4, "duration": 3.52}, {"text": "some of the surfaces that you should be", "start": 2800.079, "duration": 4.24}, {"text": "aware. Of course, I already discussed", "start": 2801.92, "duration": 4.399}, {"text": "prompt injection, which is to say they", "start": 2804.319, "duration": 3.601}, {"text": "can craft messages that trick your agent", "start": 2806.319, "duration": 5.52}, {"text": "into running commands. Then a good tool", "start": 2807.92, "duration": 6.48}, {"text": "is to use the dockerbased isolation runs", "start": 2811.839, "duration": 5.441}, {"text": "that protects your host system. So you", "start": 2814.4, "duration": 5.52}, {"text": "can set your sandbox mode to non-main,", "start": 2817.28, "duration": 4.559}, {"text": "which means sandbox everyone except your", "start": 2819.92, "duration": 4.24}, {"text": "main session, which is to say the", "start": 2821.839, "duration": 4.081}, {"text": "default one will not be sandbox, but all", "start": 2824.16, "duration": 4.24}, {"text": "others won't will, sorry. And then all,", "start": 2825.92, "duration": 4.48}, {"text": "which means sandbox everything. And then", "start": 2828.4, "duration": 5.199}, {"text": "the sandbox scope means how is the", "start": 2830.4, "duration": 5.439}, {"text": "container life cycle managed. And then", "start": 2833.599, "duration": 3.841}, {"text": "you can set workspace access as well", "start": 2835.839, "duration": 3.76}, {"text": "which will just limit if you can read", "start": 2837.44, "duration": 4.879}, {"text": "read and write or do none. Okay. And", "start": 2839.599, "duration": 5.281}, {"text": "then with respect to tools you can use", "start": 2842.319, "duration": 4.401}, {"text": "tool.den deny to block the nearest tools", "start": 2844.88, "duration": 4.239}, {"text": "like exec process or browser for agents", "start": 2846.72, "duration": 4.08}, {"text": "handling untrusted input such as from", "start": 2849.119, "duration": 3.841}, {"text": "the internet. So if you do have elevated", "start": 2850.8, "duration": 4.4}, {"text": "mode it will bypass the sandbox and run", "start": 2852.96, "duration": 4.159}, {"text": "on the host which means that it could", "start": 2855.2, "duration": 4.56}, {"text": "run anything on the host. So never grant", "start": 2857.119, "duration": 5.601}, {"text": "that power to an unknown sender. And", "start": 2859.76, "duration": 5.2}, {"text": "then browser control. If you're doing", "start": 2862.72, "duration": 6.639}, {"text": "some browser tasks with high-risk edges,", "start": 2864.96, "duration": 7.52}, {"text": "then make sure that you have a system", "start": 2869.359, "duration": 6.561}, {"text": "where you restrict browser access with a", "start": 2872.48, "duration": 5.52}, {"text": "sender allow list which only allows you", "start": 2875.92, "duration": 4.0}, {"text": "onto certain browser websites, for", "start": 2878.0, "duration": 5.04}, {"text": "example, or using a sandbox browser to", "start": 2879.92, "duration": 5.84}, {"text": "limit exposure overall. Then I watched", "start": 2883.04, "duration": 4.96}, {"text": "this YouTube video with a really good", "start": 2885.76, "duration": 4.88}, {"text": "overall aspect of enable sandbox mode,", "start": 2888.0, "duration": 4.079}, {"text": "keep it private, scope your tokens, run", "start": 2890.64, "duration": 2.64}, {"text": "security audit and consider tool", "start": 2892.079, "duration": 3.201}, {"text": "restrictions. These are the key aspects", "start": 2893.28, "duration": 4.64}, {"text": "which you should be cognizant of when", "start": 2895.28, "duration": 5.2}, {"text": "you are running openclaw. And then now", "start": 2897.92, "duration": 5.6}, {"text": "let's come into sandboxing. So as I", "start": 2900.48, "duration": 5.119}, {"text": "mentioned there are three modes. So the", "start": 2903.52, "duration": 3.839}, {"text": "information here is already been", "start": 2905.599, "duration": 3.601}, {"text": "mentioned except I forgot to talk about", "start": 2907.359, "duration": 3.921}, {"text": "scope which is either session agent or", "start": 2909.2, "duration": 3.84}, {"text": "shared in terms of the containers which", "start": 2911.28, "duration": 4.96}, {"text": "is to say that if you have a sandboxed", "start": 2913.04, "duration": 5.2}, {"text": "session scope every single time there's", "start": 2916.24, "duration": 3.92}, {"text": "a new session with a new agent you will", "start": 2918.24, "duration": 3.52}, {"text": "create a new sandbox which means there", "start": 2920.16, "duration": 3.36}, {"text": "will be lots of overhead and many", "start": 2921.76, "duration": 3.04}, {"text": "different docker containers that you", "start": 2923.52, "duration": 3.039}, {"text": "create but each session will be", "start": 2924.8, "duration": 4.64}, {"text": "sandboxed separately and then there's", "start": 2926.559, "duration": 5.601}, {"text": "the agent level which means that each", "start": 2929.44, "duration": 4.72}, {"text": "agent so your default agent will have", "start": 2932.16, "duration": 4.24}, {"text": "one sandbox box and your work agent will", "start": 2934.16, "duration": 3.679}, {"text": "have another sandbox. If you set them", "start": 2936.4, "duration": 2.88}, {"text": "both to have sandbox, they'll have their", "start": 2937.839, "duration": 3.28}, {"text": "own. And there's a shared sandbox, which", "start": 2939.28, "duration": 3.92}, {"text": "means that each agent will or all agents", "start": 2941.119, "duration": 4.081}, {"text": "that are sandbox will share the same", "start": 2943.2, "duration": 3.919}, {"text": "docker container, which means that they", "start": 2945.2, "duration": 2.96}, {"text": "don't have access to your external", "start": 2947.119, "duration": 2.72}, {"text": "files, but they do have access to the", "start": 2948.16, "duration": 2.8}, {"text": "files that they share between each", "start": 2949.839, "duration": 3.361}, {"text": "other. So this is just a trade-off that", "start": 2950.96, "duration": 4.639}, {"text": "you can make in terms of sandboxing", "start": 2953.2, "duration": 5.28}, {"text": "individually to prevent any type of", "start": 2955.599, "duration": 7.121}, {"text": "information exchange at a slower rate", "start": 2958.48, "duration": 6.4}, {"text": "with a lot of more overhead or just", "start": 2962.72, "duration": 4.96}, {"text": "giving all containers the same sandbox", "start": 2964.88, "duration": 6.56}, {"text": "container to use. And then tools once", "start": 2967.68, "duration": 6.159}, {"text": "again you can give different agents", "start": 2971.44, "duration": 5.44}, {"text": "tools and there are specific tool", "start": 2973.839, "duration": 5.201}, {"text": "policies for sandbox with the most", "start": 2976.88, "duration": 4.64}, {"text": "important one being right elevated exec", "start": 2979.04, "duration": 4.96}, {"text": "runs on host and bypasses sandbox. So", "start": 2981.52, "duration": 3.76}, {"text": "even if you have the sandbox if you have", "start": 2984.0, "duration": 2.88}, {"text": "this elevated execution then you really", "start": 2985.28, "duration": 3.68}, {"text": "need to be careful that you're not", "start": 2986.88, "duration": 5.52}, {"text": "running anything that could go wrong. So", "start": 2988.96, "duration": 4.8}, {"text": "now let's show a real life example of", "start": 2992.4, "duration": 4.0}, {"text": "setting up the sandbox. So, this script", "start": 2993.76, "duration": 5.52}, {"text": "is in the", "start": 2996.4, "duration": 6.0}, {"text": "open claw database if I'm not mistaken.", "start": 2999.28, "duration": 5.68}, {"text": "So, I'm going to go grab that here and", "start": 3002.4, "duration": 4.8}, {"text": "I'm just going to run it and see what we", "start": 3004.96, "duration": 4.96}, {"text": "get", "start": 3007.2, "duration": 4.72}, {"text": "in order to set up our Docker container", "start": 3009.92, "duration": 3.36}, {"text": "and make sure that you do have Docker", "start": 3011.92, "duration": 2.72}, {"text": "running. I was trying to set this up", "start": 3013.28, "duration": 3.839}, {"text": "before the video and it was not working.", "start": 3014.64, "duration": 5.36}, {"text": "And the reason was because my Docker", "start": 3017.119, "duration": 5.2}, {"text": "desktop was not on for Mac. If you're", "start": 3020.0, "duration": 3.359}, {"text": "using Mac, then you need to have the", "start": 3022.319, "duration": 3.681}, {"text": "Docker demon running. So once this is", "start": 3023.359, "duration": 6.401}, {"text": "all done and set, we can just ask the", "start": 3026.0, "duration": 6.4}, {"text": "open claw agent to set up a docker", "start": 3029.76, "duration": 5.52}, {"text": "container for us. You can go ahead and", "start": 3032.4, "duration": 6.32}, {"text": "modify the documents yourself, but why", "start": 3035.28, "duration": 5.839}, {"text": "do that when the easier option is in", "start": 3038.72, "duration": 4.399}, {"text": "front of you? So opening up the", "start": 3041.119, "duration": 4.081}, {"text": "terminal. Let's zoom in a bit so this is", "start": 3043.119, "duration": 5.281}, {"text": "bigger. Okay, so now we're going to say", "start": 3045.2, "duration": 6.72}, {"text": "I just ran.", "start": 3048.4, "duration": 5.76}, {"text": "Can you", "start": 3051.92, "duration": 5.36}, {"text": "make the work agent", "start": 3054.16, "duration": 6.12}, {"text": "sandboxed", "start": 3057.28, "duration": 3.0}, {"text": "on the agent scope and let's see what it", "start": 3060.96, "duration": 6.879}, {"text": "does. Okay, so we just got it running", "start": 3064.079, "duration": 5.361}, {"text": "correctly. I had some errors there", "start": 3067.839, "duration": 4.561}, {"text": "because we already maxed out our cloud", "start": 3069.44, "duration": 5.36}, {"text": "tokens. So I had to set up another API", "start": 3072.4, "duration": 6.48}, {"text": "key. But after asking it that question,", "start": 3074.8, "duration": 6.24}, {"text": "I just shine scripts/", "start": 3078.88, "duration": 4.959}, {"text": "sandbox setup.sh. Can you make the work", "start": 3081.04, "duration": 5.6}, {"text": "agent sandbox and agent scope? Then it's", "start": 3083.839, "duration": 4.961}, {"text": "saying me telling me sorry that the work", "start": 3086.64, "duration": 4.64}, {"text": "agent now has sandbox mode.all and", "start": 3088.8, "duration": 3.92}, {"text": "sandbox scope agent. The gateway has", "start": 3091.28, "duration": 3.12}, {"text": "been restarted. So you're good to go.", "start": 3092.72, "duration": 3.44}, {"text": "The work agent is now sandbox scope", "start": 3094.4, "duration": 4.56}, {"text": "agent. Okay. So in order to confirm", "start": 3096.16, "duration": 6.56}, {"text": "this, let's come into our open claw logs", "start": 3098.96, "duration": 5.92}, {"text": "which is this one right here. We're", "start": 3102.72, "duration": 4.24}, {"text": "going to come into sandboxes. So, let's", "start": 3104.88, "duration": 3.92}, {"text": "just try and see what happens when we", "start": 3106.96, "duration": 5.68}, {"text": "come back to our agent and choose work", "start": 3108.8, "duration": 9.12}, {"text": "and say, \"Can you access my desktop", "start": 3112.64, "duration": 7.12}, {"text": "files?\"", "start": 3117.92, "duration": 4.24}, {"text": "And check out what it says. All right.", "start": 3119.76, "duration": 5.359}, {"text": "And looking at this now, we see that it", "start": 3122.16, "duration": 5.76}, {"text": "says, \"Nope, I'm sandboxed. My world is", "start": 3125.119, "duration": 6.48}, {"text": "limited to this file here. I can't see", "start": 3127.92, "duration": 4.8}, {"text": "your desktop documents or anything", "start": 3131.599, "duration": 2.801}, {"text": "outside of that sandbox. It's a security", "start": 3132.72, "duration": 4.24}, {"text": "thing and honestly a good one. And going", "start": 3134.4, "duration": 4.0}, {"text": "on, if you need me to work with specific", "start": 3136.96, "duration": 2.72}, {"text": "files, you'd have to copy them into my", "start": 3138.4, "duration": 3.439}, {"text": "workspace. Then I can readit them or", "start": 3139.68, "duration": 4.0}, {"text": "paste the contents of its text into the", "start": 3141.839, "duration": 3.361}, {"text": "chat or you're trying to get me to look", "start": 3143.68, "duration": 3.36}, {"text": "at. So there you go. You can see that", "start": 3145.2, "duration": 3.44}, {"text": "now with the sandbox, it has no access", "start": 3147.04, "duration": 4.0}, {"text": "to any of the files in my computer", "start": 3148.64, "duration": 4.8}, {"text": "outside of the container. And if I come", "start": 3151.04, "duration": 5.2}, {"text": "into the sandbox mode, we see that there", "start": 3153.44, "duration": 5.119}, {"text": "are sandboxes because now we have the", "start": 3156.24, "duration": 5.44}, {"text": "work sandbox here with all the skills", "start": 3158.559, "duration": 8.8}, {"text": "and all of the MD definitions. So if we", "start": 3161.68, "duration": 9.76}, {"text": "come into our identity, it should be", "start": 3167.359, "duration": 7.2}, {"text": "something like empty right now because", "start": 3171.44, "duration": 4.72}, {"text": "we haven't actually added any", "start": 3174.559, "duration": 3.52}, {"text": "information. But of course, if this is a", "start": 3176.16, "duration": 3.52}, {"text": "work account, then you'd imagine that it", "start": 3178.079, "duration": 3.28}, {"text": "would have some work related", "start": 3179.68, "duration": 3.12}, {"text": "characteristics. but we just haven't", "start": 3181.359, "duration": 3.441}, {"text": "given the a agent that information yet.", "start": 3182.8, "duration": 3.36}, {"text": "The most important thing to note though", "start": 3184.8, "duration": 4.24}, {"text": "is that we do have the sandbox now and", "start": 3186.16, "duration": 5.679}, {"text": "the agent does not have any access to", "start": 3189.04, "duration": 5.2}, {"text": "our workspace. So I believe that this is", "start": 3191.839, "duration": 6.24}, {"text": "a great way to have the security of a", "start": 3194.24, "duration": 6.64}, {"text": "VPS without creating one. There are", "start": 3198.079, "duration": 5.121}, {"text": "drawbacks of course because now we can", "start": 3200.88, "duration": 4.16}, {"text": "only access files within the container", "start": 3203.2, "duration": 4.0}, {"text": "which makes this much less useful and", "start": 3205.04, "duration": 3.92}, {"text": "also if you give it access to internet", "start": 3207.2, "duration": 3.52}, {"text": "it still could do some pretty wacky", "start": 3208.96, "duration": 4.24}, {"text": "things. So, it's definitely a game of", "start": 3210.72, "duration": 4.96}, {"text": "pros and cons and weighing the different", "start": 3213.2, "duration": 4.8}, {"text": "scenarios, but definitely sandboxing is", "start": 3215.68, "duration": 4.72}, {"text": "a great alternative if you don't want to", "start": 3218.0, "duration": 4.319}, {"text": "run this on a server. So, there you have", "start": 3220.4, "duration": 4.32}, {"text": "it. That was the course on beginner", "start": 3222.319, "duration": 4.401}, {"text": "introduction to OpenClaw. I hope that", "start": 3224.72, "duration": 4.399}, {"text": "this was helpful and please leave any", "start": 3226.72, "duration": 4.48}, {"text": "comments if you have questions because I", "start": 3229.119, "duration": 3.841}, {"text": "will personally be responding to them", "start": 3231.2, "duration": 4.0}, {"text": "throughout the week and hoping to", "start": 3232.96, "duration": 4.32}, {"text": "address any concerns since this is such", "start": 3235.2, "duration": 4.8}, {"text": "a fast evolving project. Thank you for", "start": 3237.28, "duration": 5.12}, {"text": "listening.", "start": 3240.0, "duration": 2.4}]]