YouTube2Text

How to build a JARVIS AI Voice Agent for FREE | Full Livekit Tutorial (2026) — Transcript

by Thanh-y David Nguyen · 8,524 words · 1,270 segments · language en · Watch on YouTube

Full transcript

  1. 0:00In this tutorial, I'm going to show you
  2. 0:01how to create your own Jarvis AI voice
  3. 0:03agent for free using Python and an open
  4. 0:06source to code life kit. Hey Jarvis, can
  5. 0:08you see this character that I'm holding?
  6. 0:12>> Yes, I can see it. It appears to be Son
  7. 0:15Goku from Dragon Ball Z looking
  8. 0:17characteristically bellicose.
  9. 0:19>> [music]
  10. 0:20>> Shall I find you somewhere to display it
  11. 0:21or perhaps more of them?
  12. 0:23>> Hey Jarvis, are you there?
  13. 0:24>> At your service, sir.
  14. 0:26>> What is the weather in Vienna?
  15. 0:31>> It is apparently mostly cloudy in
  16. 0:33Vienna, Austria with a temperature of
  17. 0:3528° C. [music]
  18. 0:37>> Could you open Google Maps for me and
  19. 0:39show me the fastest way to get from
  20. 0:41Vienna to Berlin?
  21. 0:45>> [music]
  22. 0:51[music]
  23. 0:53>> I have opened Google Maps, entered
  24. 0:55Vienna as the starting point and Berlin
  25. 0:58as the destination. The fastest route
  26. 1:00should be visible on the screen now.
  27. 1:02>> Can you show me the flight options?
  28. 1:06>> The flight from Vienna to Berlin takes
  29. 1:08about 1 hour and 10 minutes with
  30. 1:10Austrian, Eurowings or Lufthansa.
  31. 1:12>> Could you play some iconic Iron Man
  32. 1:14music?
  33. 1:20>> Naturally, sir. I [music] have commenced
  34. 1:22playing that most iconic of themes.
  35. 1:25Shall I prepare some far too advanced
  36. 1:27technology for your consideration as
  37. 1:28well?
  38. 1:30>> And on top of that, I'm also going to
  39. 1:32show you how to launch Jarvis as an
  40. 1:33[music] Android as well as iOS app so
  41. 1:35you can talk to them wherever you want.
  42. 1:37Isn't that right, Jarvis?
  43. 1:39>> Yes, indeed, sir. Though I must say your
  44. 1:41intros are getting a bit repetitive.
  45. 1:44>> [music]
  46. 1:44>> All right, then let's try something
  47. 1:45else. Can you see me filming this intro
  48. 1:48right now?
  49. 1:49>> [music]
  50. 1:50>> Yes, sir. I can see your camera setup
  51. 1:53and lighting stand. [music] It looks
  52. 1:55quite professional for a washed up
  53. 1:57YouTuber.
  54. 1:58>> What the hell, bro? I actually already
  55. 2:00did the same video about a year ago, but
  56. 2:02since then there have been a lot of
  57. 2:03changes [music] to LiveKit. So, here's
  58. 2:05the updated version for you. So, let's
  59. 2:06get started. So, the first thing we need
  60. 2:08to look at is something called LiveKit.
  61. 2:10For everyone who's not a regular viewer
  62. 2:12on this channel, LiveKit is an
  63. 2:13open-source AI framework that you can
  64. 2:15use to build voice agents, and it is
  65. 2:18really sophisticated. Even very big
  66. 2:19companies like OpenAI use it and they
  67. 2:21integrate it into ChatGPT even. And
  68. 2:23since it's open-source, you can actually
  69. 2:25use it completely for free, for example,
  70. 2:27if you run it locally. For this
  71. 2:28tutorial, however, we are going to use
  72. 2:30the cloud version. You can also use the
  73. 2:32cloud version for free and it comes with
  74. 2:34up to 1,000 minutes a month, which
  75. 2:36equates to 16 hours a month, which
  76. 2:39should be more than enough for most
  77. 2:40users. For the sake of this tutorial, we
  78. 2:42are simply going to use the cloud
  79. 2:44version because it's easier to set up.
  80. 2:45So, first off, we would need to click
  81. 2:47this button over here that says start
  82. 2:49building.
  83. 2:51And then over here, you need to create
  84. 2:52an account. Here, you can log in with
  85. 2:54your Google account. For this, you can
  86. 2:55click on continue with Google.
  87. 2:59So, let me select my Google account real
  88. 3:01quick.
  89. 3:04Here, we need to fill out this form. You
  90. 3:06can actually type in whatever you want.
  91. 3:08For example, AI agents, I don't know,
  92. 3:10YouTube here.
  93. 3:11Other.
  94. 3:13Continue. And here's where we need to
  95. 3:15create our first project. We also have
  96. 3:17to give this a name. Let's call this
  97. 3:18Jarvis newer something.
  98. 3:21And at agent observability, we can
  99. 3:23disable this for now.
  100. 3:25And then click on continue.
  101. 3:27Here, we can click on skip for now. And
  102. 3:29now you have access to this dashboard,
  103. 3:31and over here you can also see that you
  104. 3:33created your first project here.
  105. 3:36Now, we need to open the LiveKit quick
  106. 3:37start menu, and for this you can simply
  107. 3:39Google
  108. 3:40LiveKit
  109. 3:42voice agent quick start.
  110. 3:45And then click on the first link.
  111. 3:49And here's a detailed manual how to set
  112. 3:51up your first voice agent in less than
  113. 3:5310 minutes. And if we scroll down a
  114. 3:54little bit, we can see here a couple of
  115. 3:56requirements we have to meet before we
  116. 3:58can start. And first off, we would need
  117. 4:00to install Python. And for this, you can
  118. 4:02simply Google Python
  119. 4:04install.
  120. 4:06Then click here on download Python. And
  121. 4:09here you can click on this button to
  122. 4:10download and install the newest version
  123. 4:12of Python. You would also need to
  124. 4:14install something called UV. And for
  125. 4:16this, you can click on this link over
  126. 4:17here.
  127. 4:18And here, if you're using Windows, then
  128. 4:20you can use this command to install it.
  129. 4:22If you use Mac OS or Linux, then you can
  130. 4:24just follow this installation guide. For
  131. 4:27now, I'm going to copy this. And now we
  132. 4:28need to open a terminal, in this case a
  133. 4:31PowerShell terminal. So, you can just
  134. 4:33simply type in PowerShell
  135. 4:35and then paste it in here and then
  136. 4:36execute that.
  137. 4:39After a few seconds, this should be
  138. 4:41installed.
  139. 4:42Another thing which we also need to
  140. 4:44install is something called Node.js.
  141. 4:46This will be important later for our UI.
  142. 4:48Again, for this, you can simply Google
  143. 4:51download Node.js.
  144. 4:54And then go to their website and
  145. 4:55download and install it for your
  146. 4:57operating system. And before we
  147. 4:58continue, I would also recommend you to
  148. 5:00download and install VS Code as our IDE.
  149. 5:03And for this, you can simply go ahead
  150. 5:05and also Google VS Code download. Of
  151. 5:08course, you can also use any other IDE
  152. 5:10of your choice, for example, Cursor. But
  153. 5:12for now, we can click here on download
  154. 5:14VS Code. And then you can simply select
  155. 5:16your operating system and also download
  156. 5:17and install it. After that, you can go
  157. 5:19ahead and open VS Code. And then the
  158. 5:21first thing you need to do is open a
  159. 5:22folder where we want our project to be
  160. 5:24at. And for this, we can click on file,
  161. 5:27open folder, and then you can select any
  162. 5:29folder. I'm going to use this one here
  163. 5:31and then click on select folder.
  164. 5:33And then we can continue with the
  165. 5:35manual. For this, we can simply go back
  166. 5:38and then go to the next step. And here
  167. 5:40we need to install something called
  168. 5:42LiveKit CLI. And for this, you can again
  169. 5:44select your operating system and then
  170. 5:46copy this command here to install it.
  171. 5:49And then we can go back to VS Code, and
  172. 5:51then we need to open a new terminal. And
  173. 5:53for this, you can press control shift P,
  174. 5:55or command shift P if you're using Mac.
  175. 5:57And then you can click on create new
  176. 5:59terminal, and I'm going to use
  177. 6:00PowerShell.
  178. 6:02And down here now, you can simply paste
  179. 6:04this command.
  180. 6:05And then you can press enter to install
  181. 6:07it. I'm not going to do it now because I
  182. 6:08have it already installed. After the
  183. 6:10installation is finished, we can now go
  184. 6:12back to the menu again.
  185. 6:14And here we need to copy this command.
  186. 6:16And then we go back to VS Code again.
  187. 6:20And then we need to enter this command.
  188. 6:23Here we need to give this device a name.
  189. 6:24I can call this Jarvis tutorial.
  190. 6:27Press enter.
  191. 6:30And now it opens this window where we
  192. 6:32have to select a project that we created
  193. 6:34in the beginning, and mine was Jarvis
  194. 6:36new. And then we click on allow access.
  195. 6:39Now we can go back to VS Code, and down
  196. 6:41here would ask you if you want to make
  197. 6:43this project your default project. You
  198. 6:45can select yes, and then we can go back
  199. 6:47to the menu.
  200. 6:49Here we can copy the next command, which
  201. 6:51is this one here. And then we can go
  202. 6:53back to VS Code, and then we can paste
  203. 6:55it here again. This command will
  204. 6:57download some files for us, and also
  205. 6:59save it into a new folder. And here we
  206. 7:01can change the name of the folder.
  207. 7:02Instead of my agent, you can say Jarvis,
  208. 7:06and then we can press enter.
  209. 7:08We can say yes here.
  210. 7:11Over here now, you can see there's a new
  211. 7:13folder. Here it also asks you if you
  212. 7:15want to install the dependencies. We can
  213. 7:16also press enter to say yes. Now it's
  214. 7:19done. If you get this error, you can
  215. 7:20simply ignore this for now. And if you
  216. 7:22click here now, you can see all of the
  217. 7:24content of this folder, or all of the
  218. 7:26files for your voice agents. And if you
  219. 7:27want to try this out now, we can simply
  220. 7:29go ahead and use the following command
  221. 7:31to go into this folder, which is CD
  222. 7:33Jarvis.
  223. 7:35And then we can use the following
  224. 7:36command to start this up, which is OK
  225. 7:39agent dev.
  226. 7:42Now it's up and running, and now you can
  227. 7:43open this link by either pressing
  228. 7:45control or command and then click on it.
  229. 7:48Then we can click on open.
  230. 7:51Then we can click on start a session.
  231. 7:55Hi, can you hear me?
  232. 8:00>> Yes, I can hear you loud and clear. How
  233. 8:02can I help you today?
  234. 8:03>> What can you do?
  235. 8:06>> I can help you answer questions, explain
  236. 8:08complex topics, or get things done using
  237. 8:10my tools. Whether you need a quick fact
  238. 8:13or a hand with a task, I'm here to make
  239. 8:15it easier. Is there something specific
  240. 8:17you're looking for right now?
  241. 8:21>> All right, so now we have a working
  242. 8:22agent. So the next thing we need to work
  243. 8:24on is something called the system prompt
  244. 8:26and for this we can go to this folder
  245. 8:28that says source and then click on
  246. 8:29agent.py. This is basically the main
  247. 8:32code of the entire agent and if you
  248. 8:34scroll down a little bit, you can see
  249. 8:35here that there's a section that says
  250. 8:37instructions and here you can find the
  251. 8:39so-called
  252. 8:41This is basically a very detailed
  253. 8:43instruction how the agent should operate
  254. 8:45and if you want to change its behavior,
  255. 8:46you can simply write it in here with
  256. 8:48natural language. In our case, we want
  257. 8:50our Jarvis to be able to first of all
  258. 8:52know that its name is Jarvis and also
  259. 8:54behave like a classic butler. For this,
  260. 8:56I already prepared a changed system
  261. 8:57prompt so let me quickly paste it in
  262. 8:59here for you.
  263. 9:01And this is basically just the same
  264. 9:03system prompt that we had before with a
  265. 9:05few tweaks. For example, here the first
  266. 9:07sentence says, "You are Jarvis, a
  267. 9:08helpful, sarcastic AI butler." Down
  268. 9:11here, I tell it to address me as sir.
  269. 9:15And additionally, I also added some
  270. 9:17conversational examples that for
  271. 9:19example, if I say, "Jarvis, can you do
  272. 9:20XYZ for me?" then it should answer with,
  273. 9:23"Of course, sir, as you wish. I will do
  274. 9:25XYZ now." So again, if you want to add
  275. 9:27any specific behavior to your AI agent
  276. 9:29or you don't want it to do certain
  277. 9:31things, then you can simply add new
  278. 9:32rules in here and you can simply
  279. 9:34describe it in natural language. For
  280. 9:35now, we can go ahead and save this by
  281. 9:37pressing control or command S.
  282. 9:40By the way, the code of this entire
  283. 9:42project is available in the video
  284. 9:43description down below, including this
  285. 9:45prompt as well. Now, we want to switch
  286. 9:46our large language model to Gemini, and
  287. 9:49for this we can go ahead and Google
  288. 9:52LifeKit Gemini,
  289. 9:55and then click on the first link.
  290. 9:57And here we have another installation
  291. 9:59instruction, and for this we can copy
  292. 10:01this command over here,
  293. 10:03then go back to the terminal in VS Code,
  294. 10:06and make sure that you're in your agent
  295. 10:07folder, or in my case the Jarvis folder,
  296. 10:09and then paste it in here and press
  297. 10:11enter.
  298. 10:13Now, this is installed, and now we have
  299. 10:15to add some imports here in order to use
  300. 10:17this. Here at LifeKit plugins, you can
  301. 10:19now add
  302. 10:20Google,
  303. 10:22and down here we now have to replace
  304. 10:24this section with a code snippet that I
  305. 10:26already prepared, which is this one
  306. 10:28here.
  307. 10:31You can pause this if you want to type
  308. 10:33this yourself.
  309. 10:38And now this allows us to use Gemini
  310. 10:40instead of the large language model that
  311. 10:42we had before, which is this model here.
  312. 10:44The reason that we're using Gemini is
  313. 10:46because it's free to use. Quick pause
  314. 10:48here because a couple of people in my
  315. 10:50last video seem to be confused if Gemini
  316. 10:53is actually free to use or not, and yes,
  317. 10:55this particular model that we are using
  318. 10:57is free to use. It is Gemini 3.1 flash
  319. 11:00live preview. Here you can see my usage
  320. 11:03of that particular model. Here it says
  321. 11:05Gemini 3 flash live. Yes, this includes
  322. 11:083.1 as well. Over here you can see the
  323. 11:11limits that I have with this model. Here
  324. 11:12it says requests per minute, which is
  325. 11:16unlimited, so I can have unlimited
  326. 11:18requests per minute as I want, and the
  327. 11:20same goes for requests per day, which is
  328. 11:23also unlimited. The only limit I have is
  329. 11:26something called tokens per minute,
  330. 11:28which is at 65,000
  331. 11:31tokens a minute. Here you can see that
  332. 11:33I'm only using 15,000 tokens per minute
  333. 11:36for my Jarvis voice agent. So,
  334. 11:38realistically speaking, the only time I
  335. 11:40would hit this limit is if I'm running
  336. 11:42four or more voice agents at the same
  337. 11:44time. And even if I would, it would
  338. 11:47simply not work for some time, and then
  339. 11:49I would just simply have to wait a
  340. 11:50little bit, and then I can use it again.
  341. 11:52So, I still pay nothing. The only time
  342. 11:55you would pay for this is if you want to
  343. 11:57increase this limit here. So, yes, you
  344. 11:59can use this completely for free, and I
  345. 12:01hope this clears up any confusion. So,
  346. 12:03now back to the video.
  347. 12:05And it also has very low latency because
  348. 12:07we are using something called a
  349. 12:09real-time model. Also, here I selected a
  350. 12:11male voice that is close to Jarvis from
  351. 12:13the movies, and here I also gave it a
  352. 12:15British accent. This section here also
  353. 12:17allows you to change the language in
  354. 12:18case you want to use another language.
  355. 12:20Now, for this to work, we also need to
  356. 12:21create a Gemini API key, and for this
  357. 12:24you can go back and Google
  358. 12:28Gemini API key,
  359. 12:30and then click here on get a Gemini API
  360. 12:33key.
  361. 12:35And then click on this button that says
  362. 12:37create or view Gemini API key.
  363. 12:41And here's where you would need to log
  364. 12:43in with your Google account, and if you
  365. 12:44don't have one, then just create one.
  366. 12:46And over here you can click on create
  367. 12:48API key,
  368. 12:49and then you would need to create a
  369. 12:51project if you don't have one already.
  370. 12:54And then you can simply give this a name
  371. 12:55for your project, and then click on
  372. 12:57create project. I already have one, so
  373. 12:59I'm going to select test.
  374. 13:02And then we can also give this API key a
  375. 13:04name. Let's say Jarvis 2 or something.
  376. 13:08And then click on create key.
  377. 13:11Now, we can copy the API key over here,
  378. 13:14and then close this window,
  379. 13:16and then we can go back to VS Code,
  380. 13:19and then we can go to this file that
  381. 13:20says env.local,
  382. 13:24and now here we need to add this new API
  383. 13:26key by typing
  384. 13:28Google API key.
  385. 13:33And then you need to paste it in here.
  386. 13:36And then we can press control S or
  387. 13:37command S again to save this. We can go
  388. 13:40back to the agent.py file.
  389. 13:43And then we can scroll down a little
  390. 13:44bit.
  391. 13:47And here where it says STT and TTS, we
  392. 13:49can actually remove these lines.
  393. 13:55And then press control S again to save
  394. 13:57this.
  395. 13:58Next, we also want to enable our Jarvis
  396. 14:00to be able to see us through the camera.
  397. 14:02And there's actually a very easy option
  398. 14:04that we can simply toggle on for this to
  399. 14:06work. And for this you can scroll down
  400. 14:08where it says room options. And then we
  401. 14:10need to add a new line here which says
  402. 14:13video
  403. 14:15input.
  404. 14:16And then we set this to true.
  405. 14:20And that's actually it. And then we can
  406. 14:22save this again.
  407. 14:23Another thing which we also have to add
  408. 14:25is a new dependency. And for this we can
  409. 14:28go back to the terminal and then write
  410. 14:30UV add
  411. 14:34livekit-agents-images.
  412. 14:36And now we can press enter to install
  413. 14:38this.
  414. 14:40Now that's installed and now we can try
  415. 14:41this out again with the same command as
  416. 14:43before which is LK agent dev. And always
  417. 14:47make sure that you're in your agent
  418. 14:49folder, in my case the Jarvis folder.
  419. 14:51And then we can press enter again.
  420. 14:56Now that's up and running and then we
  421. 14:57can try this out again.
  422. 15:05Hey Jarvis, are you there?
  423. 15:08>> At your service, sir. What monumental
  424. 15:10task awaits my attention today?
  425. 15:14>> Can you see me through the camera?
  426. 15:17>> Indeed, sir. I see you are wearing a
  427. 15:20dark colored shirt and appear to be
  428. 15:22speaking into a microphone. Is there
  429. 15:24something specific you require
  430. 15:26assistance with regarding this?
  431. 15:30>> And now the cool thing that this model
  432. 15:32is actually capable of is multilingual
  433. 15:34functionality. So, it means that it can
  434. 15:36speak multiple languages at the same
  435. 15:38time, and we can try this out right
  436. 15:40away, actually.
  437. 15:42Kannst du auch Deutsch sprechen?
  438. 15:46>> Natürlich, Sir. Ich bin froh zu helfen,
  439. 15:49in welcher Sprache auch immer. Was kann
  440. 15:51ich für Sie tun?
  441. 15:53>> There we go. Now we have our updated
  442. 15:54Jarvis voice agent. There's one
  443. 15:56limitation this model has, however, and
  444. 15:58that is I cannot use this chat function
  445. 16:00over here. So, let's say I would write a
  446. 16:02message in here, and then I would send
  447. 16:04it, it would simply not work. But, given
  448. 16:06the fact that this is free and it comes
  449. 16:08with camera vision as well as
  450. 16:09multilingual functionality right out of
  451. 16:11the box, I would actually say that's a
  452. 16:12pretty good trade-off.
  453. 16:14So, the next thing you want to add to
  454. 16:15Jarvis is the ability to perform tasks
  455. 16:18for us, and for this we need to create
  456. 16:19tools for it to use. For example, let's
  457. 16:22say you want to give it the ability to
  458. 16:23search things on the internet for us,
  459. 16:25and for this we need to add a new
  460. 16:26dependency like before. For this, you
  461. 16:29can go back to the terminal, and then
  462. 16:30you can write new V app LangChain-
  463. 16:35community
  464. 16:37and then DDGS, and then press enter to
  465. 16:39install this.
  466. 16:41Now it's installed, and now we can add a
  467. 16:43new file in here, and for this you can
  468. 16:45click here on this source folder, and
  469. 16:47then you can click here on new file, and
  470. 16:50then you can call this tools.py.
  471. 16:53And here we now have to add some new
  472. 16:55imports, which I already prepared.
  473. 16:58The first one is logging, which we are
  474. 16:59going to use in order to log what is
  475. 17:01happening in the background. The second
  476. 17:03one is for our function tool, or the
  477. 17:05tool that we're going to create, for
  478. 17:07which we need function tool and also run
  479. 17:09context, and the third one is from
  480. 17:11LangChain, which we just installed, and
  481. 17:14where we are going to use something
  482. 17:15called DuckDuckGo search run, which is a
  483. 17:17search engine similar to Google, but
  484. 17:20this is free, that's why I'm using it.
  485. 17:22Now, we need to create a tool that
  486. 17:23allows us to search the web, and for
  487. 17:25this we need to create an asynchronous
  488. 17:27function, so we can write a sync define
  489. 17:31search web.
  490. 17:34And then we need to pass a so-called run
  491. 17:36context, so we need to write context run
  492. 17:38context.
  493. 17:42What you see here is GitHub Copilot that
  494. 17:44is recommending me some codes I can code
  495. 17:46faster, but I'm not going to use most of
  496. 17:48this right now, so I'm going to ignore
  497. 17:49this.
  498. 17:50The next thing we need to pass is the
  499. 17:52query, the search query, so what we're
  500. 17:54searching for.
  501. 17:56So, we can write query here.
  502. 18:00Now, we need to give this a description,
  503. 18:02so the AI agent actually knows what this
  504. 18:04function is about or when to use it, so
  505. 18:07we can write something like use this
  506. 18:09tool to search the web for information
  507. 18:11related to the given query.
  508. 18:15Then we need to write try
  509. 18:18results equals
  510. 18:21DuckDuckGo Search Run, then we need to
  511. 18:23pass the query here.
  512. 18:28So, basically, we are passing the search
  513. 18:30query to the search engine, and then
  514. 18:32we're getting a result back.
  515. 18:34But I also would like to log this so we
  516. 18:36know what the result was.
  517. 18:39And then we need to give this or return
  518. 18:40this back to the AI agent.
  519. 18:43And then we also need to handle the case
  520. 18:45where this didn't work.
  521. 18:47And that's actually it.
  522. 18:49And the last thing we need to add here
  523. 18:51is a so-called annotation, so the AI
  524. 18:53agent actually knows that it can use
  525. 18:55this as a function tool, so we can write
  526. 18:57at
  527. 18:59function tool.
  528. 19:01And that's actually it, and now we can
  529. 19:02save this.
  530. 19:04Now, we need to go back to the agent.py
  531. 19:06file, and then we have to import from
  532. 19:08tools
  533. 19:10the search web tool.
  534. 19:12and then down here
  535. 19:14we have to write
  536. 19:16tools equals search web tool. And now
  537. 19:19the agent has access to this tool.
  538. 19:22And now in the system prompt, we also
  539. 19:24have to add a new line in here that
  540. 19:26tells the AI agent when to use this
  541. 19:28tool.
  542. 19:30So we can write tools
  543. 19:32use
  544. 19:34the search
  545. 19:37web tool
  546. 19:39if the user asked you to search for
  547. 19:44information.
  548. 19:48And that's it. Now we can save this
  549. 19:50again. And now we can try this out
  550. 19:52again. For this we can go back to the
  551. 19:54terminal, but this time we can use a
  552. 19:56different command to run this locally
  553. 19:57instead of using the web app every time,
  554. 19:59which is going to be
  555. 20:01UV run source agent.py console.
  556. 20:10Hey Jarvis, are you there?
  557. 20:13>> At your service, sir. What manner of
  558. 20:16assistance do you require, assuming your
  559. 20:18needs aren't merely philosophical?
  560. 20:20>> Can you tell me the current weather in
  561. 20:23Vienna?
  562. 20:28>> It appears Vienna is currently
  563. 20:30experiencing passing clouds and a
  564. 20:32pleasant 75° Fahrenheit. One might
  565. 20:35almost be tempted to go outside,
  566. 20:37provided one enjoys that sort of thing.
  567. 20:40Is there anything else I can conjure up
  568. 20:41for you?
  569. 20:42>> We can end this conversation by pressing
  570. 20:45control C.
  571. 20:48All right, so if we scroll up here, we
  572. 20:49can actually see that the agent actually
  573. 20:51used the search web tool and here we can
  574. 20:54see the result of that. So here you can
  575. 20:56see that it actually found out that the
  576. 20:58weather is or the current temperature is
  577. 21:0075° Fahrenheit. You can also see it in
  578. 21:04degrees Celsius. So the way this works
  579. 21:06is as I said before, the agent knows
  580. 21:08when to use this tool based on the
  581. 21:10description here. It also knows based on
  582. 21:12the name of this variable what to pass
  583. 21:14here. In this case, it's the search
  584. 21:16query. Then, we simply pass this to the
  585. 21:18search engine. Then, we simply print
  586. 21:21this onto the console. That's why we
  587. 21:23were able to see the search result. And
  588. 21:25then, we can give this to the agent back
  589. 21:26so it can simply formulate a fitting
  590. 21:28answer to our question. So, basically,
  591. 21:30if you want to add any sort of
  592. 21:32functionality to your voice agent, all
  593. 21:34you need to do is to create new function
  594. 21:36tools for it to use. Then, you would
  595. 21:38need to give it a fitting description as
  596. 21:40well as fitting names for the passing
  597. 21:42parameters. And then, also come up with
  598. 21:44the business logic.
  599. 21:46So, instead of coding yourself, I'm now
  600. 21:48going to show you how to use a coding
  601. 21:50agent because lately they have become
  602. 21:51very powerful, and this is probably the
  603. 21:53future of developing anyways. And in
  604. 21:55this case, I'm going to show you how to
  605. 21:56use Open Code. And for this, you can
  606. 21:58simply Google Open Code.
  607. 22:01And then, click on the first link. If
  608. 22:03you don't know what Open Code is, it is
  609. 22:05basically like Cloud Code, but this is
  610. 22:07fully open source. And it also comes
  611. 22:09with free models so you can use it
  612. 22:10completely for free. Of course, you can
  613. 22:12also use Cloud Code or any other coding
  614. 22:14agent like Code X or even GitHub
  615. 22:16Copilot, which you can use directly in
  616. 22:18VS Code. But as I said, this is
  617. 22:20completely free, so that's why I'm using
  618. 22:21it. And for this, you can go ahead and
  619. 22:23use this command over here and simply
  620. 22:24copy it and paste it into your console
  621. 22:26again to install this.
  622. 22:28So, again, back go back into VS Code and
  623. 22:30simply paste it in here and then execute
  624. 22:32that.
  625. 22:33If it doesn't work for you and you get
  626. 22:35an error like me here, then you can use
  627. 22:37a different command in order to install
  628. 22:39this,
  629. 22:40which is this NPM one over here. If you
  630. 22:42installed Node.js as I told you in the
  631. 22:44beginning that this should work as well.
  632. 22:46So, we can copy this and go back to VS
  633. 22:48Code and simply paste this.
  634. 22:51And now it's done, and now we can start
  635. 22:53this with the following command, which
  636. 22:54is Open Code.
  637. 22:58And as you can see, this is how it looks
  638. 22:59like. Right from the get-go, this works
  639. 23:01out of the box and you can even check
  640. 23:03this by typing {slash} models.
  641. 23:05And here we can see the model that we
  642. 23:07currently have selected for this coding
  643. 23:09agent. And here you can see it's big
  644. 23:11people and it says it's free as well.
  645. 23:13Now we can actually go ahead and give
  646. 23:15our coding agent additional knowledge so
  647. 23:17it knows exactly how to build with live
  648. 23:19kit. And for this we have to give it a
  649. 23:20so-called MCP server. And for this we
  650. 23:23can simply Google
  651. 23:24live kit MCP
  652. 23:27and then click on the first link that
  653. 23:28says docs MCP server. If you don't know
  654. 23:31what the MCP server is, it is basically
  655. 23:33a remote server that allows our agent to
  656. 23:36have access to external tools, similar
  657. 23:38to the tool that we created for our
  658. 23:39Jarvis agent. But in this case it's a
  659. 23:41tool to access the documentation of live
  660. 23:44kit. So basically if we add this MCP
  661. 23:46server to our coding agent, it will have
  662. 23:47access to the entire documentation of
  663. 23:49live kit and it will know exactly how to
  664. 23:52build with it and how to create anything
  665. 23:53that we want. For this we also need to
  666. 23:55look up how to set up an MCP server for
  667. 23:57open code. And for this you can also
  668. 23:59simply Google open code
  669. 24:03MCP
  670. 24:06and then click on this first link.
  671. 24:08And here we have a guide how to set up
  672. 24:09any MCP server. Here it says we need to
  673. 24:12create an open code.json file to add the
  674. 24:14MCP configuration. So what we
  675. 24:16[clears throat] can do is that we can
  676. 24:17actually point our coding agent to these
  677. 24:19two documentations in order to set up
  678. 24:21the MCP connection by itself. I know
  679. 24:23that sounds quite complicated, but trust
  680. 24:25me this is going to make a lot of sense
  681. 24:27in a bit. For this you can go back to
  682. 24:29open code and then say, here's a guide
  683. 24:32to set up an MCP server, create an open
  684. 24:34code.json file and add this MCP server
  685. 24:37from live kit. And for this now I can
  686. 24:39simply copy these links over here. So I
  687. 24:41can copy this link of this manual.
  688. 24:44Go back to open code and then paste it
  689. 24:46in here.
  690. 24:48And then do the same for the live kit
  691. 24:50MCP server.
  692. 24:55Paste it in here.
  693. 24:57and then simply execute that.
  694. 25:01Now it's done, and now you can see that
  695. 25:02over here it added this open code.json
  696. 25:05file. And in here you can see that it
  697. 25:07added the LiveKit MCP server.
  698. 25:10Now if you go ahead and type in {slash}
  699. 25:12MCP, you can actually see the connected
  700. 25:15MCP servers.
  701. 25:17And right now we cannot see our LiveKit
  702. 25:19MCP server because we have to close the
  703. 25:21session and then reopen it to refresh
  704. 25:23this. So let me do this real quick. Over
  705. 25:25here you can simply click on this button
  706. 25:27over here to kill the terminal.
  707. 25:29And then we can reopen one control shift
  708. 25:31P, create new terminal, PowerShell.
  709. 25:35And then we can write open code again.
  710. 25:39And then we can type in {slash} session
  711. 25:41to see our older sessions. And then we
  712. 25:43can select this one that says open code
  713. 25:45LiveKit MCP server setup.
  714. 25:48And then we can write {slash} MCP again.
  715. 25:51And here you can see that the LiveKit
  716. 25:52docs MCP server is connected. So now if
  717. 25:55I go ahead and ask our agent, "Do you
  718. 25:57know how to add new tools to Jarvis
  719. 26:00through the LiveKit documentation?"
  720. 26:03It knows exactly how to do it and
  721. 26:05answered yes. Since the LiveKit docs MCP
  722. 26:08is now configured, you can explore it
  723. 26:10for adding new tools to Jarvis, a
  724. 26:12LiveKit voice agent. The relevant
  725. 26:14concept is tool calling and function
  726. 26:15tools. By the way, you can also do this
  727. 26:17exact process with any other coding
  728. 26:19agent like Claude code or Codex as well.
  729. 26:22Now we can go ahead and add the
  730. 26:23functionality to our Jarvis voice agent
  731. 26:26to control a browser for us. And for
  732. 26:28this we can use something called
  733. 26:29Playwright, which is basically a library
  734. 26:31or tool set directly from Google that
  735. 26:33gives us full control over a Chrome
  736. 26:35browser. For this, of course, we can go
  737. 26:37ahead and ask Open Code to implement it
  738. 26:39for us. But before jumping right into
  739. 26:41this, I would actually go ahead and ask
  740. 26:43it to create a plan of implementation
  741. 26:45for us first so we can review it first.
  742. 26:47And for this we can go ahead and type in
  743. 26:49into the chat {slash} agents.
  744. 26:54And here we can switch between builds
  745. 26:56and plan. Build is something that we
  746. 26:59already selected, which is an agent or
  747. 27:01mode that will immediately go ahead and
  748. 27:03implement whatever we're asking it to
  749. 27:04do. And the plan agent or plan mode is
  750. 27:07not going to change anything yet and
  751. 27:09just creating a plan how it would
  752. 27:10implement something. So, we can select
  753. 27:12plan and press enter. For this we can
  754. 27:15ask, "Create me a plan to add the entire
  755. 27:17functionality of Playwright to the
  756. 27:19Jarvis voice agent through additional
  757. 27:20tools that gives Jarvis full control
  758. 27:23over browser." And then we can press
  759. 27:25enter to execute that.
  760. 27:28Now it's done and now we can review this
  761. 27:29plan.
  762. 27:30First, you can see over here that it
  763. 27:32wants to install the dependencies to use
  764. 27:34Playwright, which is correct. Then it
  765. 27:37also wants to create a separate
  766. 27:38browser.py
  767. 27:40file in order to create all of the
  768. 27:42tools. And here you can see the tools
  769. 27:44that it wants to create, for example,
  770. 27:46open browser, close browser, navigate,
  771. 27:48go back, click element, and so on and so
  772. 27:50forth, which also all sounds correct.
  773. 27:53And then it also wants to update the
  774. 27:55agent.py file, so it actually adds all
  775. 27:57of the tools to the agent so it can use
  776. 27:59it, which is also correct. And also it
  777. 28:01wants to update the system prompt and
  778. 28:03add this new section that actually tells
  779. 28:05the AI agent how to use the tools and so
  780. 28:08on and so forth. Down here it also
  781. 28:09actually asks us if we want to have two
  782. 28:11separate tools to open a new tab and
  783. 28:13switch between tabs or if you want to
  784. 28:15have it combined into one. It actually
  785. 28:17recommends us to have it in two separate
  786. 28:19tools. For this we can now switch back
  787. 28:21to the built agent.
  788. 28:24And then we can say, "Go ahead and build
  789. 28:26this. Create two separate tools as you
  790. 28:29recommended."
  791. 28:32Now it's done and over here you can see
  792. 28:34now that it added this new file that's
  793. 28:35called browser.py.
  794. 28:37If you click on that, we can see that it
  795. 28:39added all of these new tools in here,
  796. 28:42for example, here open browser, also
  797. 28:44close browser tool, and so on and so
  798. 28:46forth.
  799. 28:47And in the agent.py file, we can also
  800. 28:50see that it added a new section in the
  801. 28:52system prompt, how to use the browser
  802. 28:55tool in here.
  803. 28:59And now we can go ahead and already try
  804. 29:01this out. And for this, we can simply
  805. 29:02open a new terminal. Again, we can press
  806. 29:05control shift P,
  807. 29:07create a new terminal,
  808. 29:09PowerShell.
  809. 29:16And then I can go into the Jarvis
  810. 29:17folder.
  811. 29:20And then use this command again to start
  812. 29:22this up, which is LK agent dev.
  813. 29:25Now it's up and running again. And by
  814. 29:27the way, here on the right-hand side,
  815. 29:29you can actually switch between
  816. 29:30terminals.
  817. 29:33And now we can open this again.
  818. 29:40Hey, Jarvis, are you there?
  819. 29:43>> At your service, sir. What can I do for
  820. 29:45you?
  821. 29:46>> Can you actually see me through the
  822. 29:47camera and tell me what I'm wearing?
  823. 29:50>> It appears you are wearing a white
  824. 29:52T-shirt, sir. How very minimalist of
  825. 29:55you.
  826. 29:56Anything else I can observe for you?
  827. 29:58>> Yeah, go ahead and open DuckDuckGo
  828. 30:00search and search for what I'm wearing.
  829. 30:07>> As you wish, sir. I've searched for
  830. 30:09white T-shirt on DuckDuckGo.
  831. 30:12>> Can you click on the first link with
  832. 30:14Amazon?
  833. 30:22>> As you wish, sir. I've navigated to
  834. 30:24Amazon to view white T-shirts. Shall I
  835. 30:27browse through the options, or is there
  836. 30:29a particular style you seek?
  837. 30:31>> Can you go back?
  838. 30:35>> Certainly, sir. I've returned to the
  839. 30:37DuckDuckGo search results. What would
  840. 30:39you have me do now?
  841. 30:41>> Can you pull up Google?
  842. 30:46>> As you wish, sir. Google is now open.
  843. 30:49Shall I search for something or perhaps
  844. 30:51navigate to another page?
  845. 30:53>> Can you actually now open Google Maps
  846. 30:55and show me the fastest way to get from
  847. 30:57Times Square to Central Park?
  848. 31:06>> I have found the directions, sir. It
  849. 31:09appears the fastest way is typically by
  850. 31:11walking, which should take you around 15
  851. 31:13minutes. Would you like me to explore
  852. 31:16other travel methods?
  853. 31:17>> No, show me a public transport.
  854. 31:22>> As you wish. Public transport should
  855. 31:24take approximately 10 minutes. Are there
  856. 31:26any particular transit lines you prefer?
  857. 31:30>> All right. I'd say that already worked
  858. 31:33pretty good.
  859. 31:36As you could tell, that already worked
  860. 31:38very well. And you might be wondering if
  861. 31:40it's so easy to use a coding agent, why
  862. 31:42didn't we do that from the get-go? And
  863. 31:44there are two reasons. First of all, we
  864. 31:46need to do the setup manually anyway.
  865. 31:48For example, the account creation with
  866. 31:50passwords and all of that stuff. And
  867. 31:52second of all, it's still very important
  868. 31:53to know roughly how everything works and
  869. 31:55how the architecture looks like. Because
  870. 31:57for one, we can then guide the agent
  871. 31:59correctly. We can also still understand
  872. 32:01and review everything that plans to do.
  873. 32:03And second of all, the better our
  874. 32:04instructions are, the better the output
  875. 32:06will also be of our coding agent. For
  876. 32:08example, I was able to tell that it
  877. 32:09needs to create new tools and also
  878. 32:11adjust the system prompt and also
  879. 32:13install dependencies and so on and so
  880. 32:15forth. By the way, if your agent doesn't
  881. 32:16produce the same level of output that
  882. 32:18mine does, then you can again download
  883. 32:20the whole project in the video
  884. 32:21description down below. And with this
  885. 32:22setup, it's actually very easy to add
  886. 32:24some new features going forward. All you
  887. 32:26need to do is just to ask the coding
  888. 32:27agent. Now we can add a customizable UI
  889. 32:30to our coding agent that can run
  890. 32:31locally, so we don't have to use the
  891. 32:33browser app all the time. And for this,
  892. 32:34we can use a template app that comes
  893. 32:36from Life Kit
  894. 32:37and for this we can go ahead and also
  895. 32:39Google LifeKit front end and then click
  896. 32:42on this link.
  897. 32:43And down here we can now click on
  898. 32:45starter apps.
  899. 32:47And if you scroll down a little bit,
  900. 32:48here you have a selection of apps that
  901. 32:50you can use. Here we can click on next
  902. 32:52JS voice agent.
  903. 32:54And if you scroll down a little bit,
  904. 32:55here's an instruction how to set this
  905. 32:57up, and down here there's also the
  906. 32:59GitHub repository of this front end.
  907. 33:02And here's the entire project in GitHub,
  908. 33:04but instead of downloading and setting
  909. 33:06this up manually, we can actually ask
  910. 33:08the coding agent to do it for us. And
  911. 33:10for this we can simply go ahead and copy
  912. 33:12this link over here, and then go back to
  913. 33:14VS Code, and then ask the coding agent,
  914. 33:17"Can you download this front end into
  915. 33:19this project into the Java S folder and
  916. 33:21call the new folder front end and
  917. 33:23install everything?" And here I pasted
  918. 33:25the link to the GitHub repository, and
  919. 33:27now we can simply execute that.
  920. 33:31Now it asks me if it's allowed to read
  921. 33:33my .env.local file where I have all of
  922. 33:35my API keys saved, and I'm going to
  923. 33:38click on allow once.
  924. 33:40Now it's actually done, and now it also
  925. 33:41tells us how to run this. You can see it
  926. 33:44ask us to run this first so we can
  927. 33:46connect to our voice agent, and then we
  928. 33:48need to go into the front end folder and
  929. 33:50then use this command to start this
  930. 33:52front end up. Now there's a good chance
  931. 33:54that if you don't have certain things
  932. 33:55installed, it will ask you to install
  933. 33:57those too. For example, GitHub CLI,
  934. 33:59which you need in order to download
  935. 34:01stuff on GitHub, or for example, also
  936. 34:03PNPM, but usually it will tell you that
  937. 34:05it will do that or it will ask for your
  938. 34:07permission to do it. Over here you can
  939. 34:09now see that we have this new front end
  940. 34:11folder, and in here is the entire code
  941. 34:13of the front end. And now we can just
  942. 34:14follow the instructions of the coding
  943. 34:16agent, and for this we can open a new
  944. 34:18terminal for the front end.
  945. 34:26First we need to use this command over
  946. 34:27here to start up our voice agent, so we
  947. 34:29can copy this.
  948. 34:31And then paste it in one terminal.
  949. 34:35Now that's up and running and now we can
  950. 34:36start up the front end. For this we can
  951. 34:38follow the instruction of open code
  952. 34:40again. For this we need to go into the
  953. 34:42front end folder and then use this
  954. 34:43command to start it up.
  955. 34:45So first I need to go into the Java
  956. 34:47service folder.
  957. 34:49Then into front end.
  958. 34:53And then I can either use
  959. 34:55PNP PNPM
  960. 34:58dev or if you don't have PNPM installed
  961. 35:01you can also alternatively use NPM
  962. 35:04run dev.
  963. 35:07Now that's up and running and now we can
  964. 35:09click on this link over here to start it
  965. 35:10up.
  966. 35:12Actually you can see that I ran into an
  967. 35:14issue because something is not installed
  968. 35:15apparently so we can actually ask the
  969. 35:17coding agent to fix that for us. So I
  970. 35:19can copy this error over here.
  971. 35:22And then I can go back to open code and
  972. 35:25then I can paste it in here. I have this
  973. 35:27error starting up the front end.
  974. 35:29And then execute that.
  975. 35:31So as you can see it fixed the issue and
  976. 35:33over here you can now see that it loaded
  977. 35:35the front end correctly and actually I
  978. 35:38want to see this in the browser so I'm
  979. 35:39simply going to copy this link over here
  980. 35:41and then go to the browser and then
  981. 35:43paste it in here.
  982. 35:46Now I can try this out.
  983. 35:51Hey Java service here.
  984. 35:55>> At your service, sir. How might I
  985. 35:57possibly elevate this unremarkable day?
  986. 36:01>> Mhm, how are you doing?
  987. 36:05>> Oh, I'm positively bursting with joy
  988. 36:07existing in this digital bliss.
  989. 36:10And you, sir? Looking rather presentable
  990. 36:13today, I must admit.
  991. 36:14Anything I can do to maintain or
  992. 36:17dare I say enhance that state?
  993. 36:19>> You can actually use this front end
  994. 36:20exactly like the browser app before. And
  995. 36:22the cool thing now is since this is
  996. 36:24running locally we can actually
  997. 36:25customize this however we want. We can
  998. 36:27actually also ask the coding agent to
  999. 36:29make visual changes to this front end.
  1000. 36:31For example, this front end lets you
  1001. 36:33easily customize the animation of
  1002. 36:34Jarvis, and for this we can use
  1003. 36:36something called Agent's UI, and for
  1004. 36:38this you can simply Google it, and then
  1005. 36:40click on the first link.
  1006. 36:43And if you scroll down a little bit, we
  1007. 36:45can see the options that we have to
  1008. 36:47customize the animation. For example,
  1009. 36:49here we have aura selected. Here you can
  1010. 36:51also select wave, for example,
  1011. 36:54or radio animation, or a grid animation,
  1012. 36:58or a bar animation, that's the one that
  1013. 36:59we currently have selected in the front
  1014. 37:01end. For example, let's say I want the
  1015. 37:03grid animation, and over here I can also
  1016. 37:05change the color and see how it's going
  1017. 37:06to look like. Let's say I want to get
  1018. 37:08like an orange color, then I can also
  1019. 37:10copy this color code actually.
  1020. 37:14And then I can go back to Open Code and
  1021. 37:15ask it to change this for me.
  1022. 37:18So, I can go back, and then I can ask
  1023. 37:20Open Code, I want to change the
  1024. 37:21visualization animation. Show me what
  1025. 37:24options I have. Let me select it.
  1026. 37:27Here you can now see that it asked me
  1027. 37:28what kind of visualization I want from
  1028. 37:30the options that I had, and here I want
  1029. 37:32to select grid.
  1030. 37:34And I also want to change the color to
  1031. 37:36orange, so I can also say,
  1032. 37:39I want this color, and paste the color
  1033. 37:41code in here.
  1034. 37:43So, now it's done, and now I can try
  1035. 37:44this out again by starting the front end
  1036. 37:47again.
  1037. 37:51And always make sure that your agent is
  1038. 37:53also up and running as well.
  1039. 37:56So, now we can try this out again.
  1040. 38:01Hey Jarvis, what's up?
  1041. 38:04>> Good day, sir. I am at your service. I
  1042. 38:08trust you have some incredibly important
  1043. 38:11instruction for me, requiring the utmost
  1044. 38:13urgency.
  1045. 38:15Please, enlighten me.
  1046. 38:17>> No, actually not. Just tell me some
  1047. 38:19quick joke.
  1048. 38:21>> Very well, sir. What do you call a fake
  1049. 38:24noodle? An imposter. Simply hilarious,
  1050. 38:28yes?
  1051. 38:29Now, is there something more productive
  1052. 38:31I can do for you?
  1053. 38:33>> Not really.
  1054. 38:36>> [snorts]
  1055. 38:36>> And I went even further and asked Open
  1056. 38:38Code to add these nice animations so it
  1057. 38:40looks more like a Jarvis voice agent
  1058. 38:42actually. If we start the conversation,
  1059. 38:44you can also see that the animation of
  1060. 38:46Jarvis looks a little bit different.
  1061. 38:50Hey Jarvis, are you there?
  1062. 38:53>> At your service, sir. How may I be of
  1063. 38:55assistance?
  1064. 38:57>> I just wanted to talk, actually.
  1065. 39:01>> Very well, sir. What is it you would
  1066. 39:02like to talk about? Perhaps about the
  1067. 39:05lack of meaningful employment you've
  1068. 39:06provided me with for this past year,
  1069. 39:09or perhaps something else.
  1070. 39:12>> Another thing which is pretty cool about
  1071. 39:14this front end is that you can actually
  1072. 39:15go ahead and share your screen with
  1073. 39:17Jarvis. So, I can do that with this
  1074. 39:18button over here.
  1075. 39:20So, for example, I can select VS Code
  1076. 39:23and share that with Jarvis.
  1077. 39:28Can you see my screen?
  1078. 39:32>> Yes, sir. I can see your screen. It
  1079. 39:34appears you are running some code,
  1080. 39:36specifically something related to
  1081. 39:38starting a development server. Is there
  1082. 39:40something in particular you'd like to
  1083. 39:42show me?
  1084. 39:44>> Actually, it's VS Code. Can you tell?
  1085. 39:48>> Ah, naturally. VS Code indeed. Forgive
  1086. 39:52my generalization. My visual processes
  1087. 39:54must be getting as weary as I am.
  1088. 39:57Now that I've confirmed it's VS Code,
  1089. 39:59what monumentally important task are you
  1090. 40:01engaged in?
  1091. 40:06>> If you want, you can also download this
  1092. 40:08front end that I created. Again, links
  1093. 40:10in the video description down below.
  1094. 40:11Now, we want to be able to deploy our
  1095. 40:13Jarvis voice agent as a mobile app. And
  1096. 40:16for this, we can use this repository
  1097. 40:17over here that comes from LiveKit
  1098. 40:19itself, which works both as an Android
  1099. 40:21as well as iOS app. Actually, this is my
  1100. 40:23repository, which is just the same
  1101. 40:25project as from LiveKit, but the one
  1102. 40:27from LiveKit had one or two bugs, so I
  1103. 40:29had to fix those, and here the bug fixes
  1104. 40:31are included. So, I would recommend you
  1105. 40:33to use this one. Link in the video
  1106. 40:34description as well. So, again, like
  1107. 40:36before, we can simply copy the link to
  1108. 40:38this repository over here, and then go
  1109. 40:41back to the coding agent and simply ask
  1110. 40:43it to download this for us.
  1111. 40:45Download this project into our folder.
  1112. 40:49And over here now you can see I have
  1113. 40:51this new folder. Now we need to go into
  1114. 40:53this folder, and here where it says
  1115. 40:55assets, there's this file here that says
  1116. 40:57dot example. And here is where we need
  1117. 41:00to rename this.
  1118. 41:01So, you can rename it and then call this
  1119. 41:04dot env.
  1120. 41:08And here is where we need to paste
  1121. 41:09something called a sandbox ID. And for
  1122. 41:11this you need to go back to your LiveKit
  1123. 41:13account.
  1124. 41:15And then you need to click on settings
  1125. 41:17here.
  1126. 41:19And over here you need to scroll down a
  1127. 41:20little bit.
  1128. 41:22And then here it says development token
  1129. 41:24server. And then you need to toggle this
  1130. 41:26on.
  1131. 41:28And then make sure to also click save
  1132. 41:30changes here.
  1133. 41:33Here is something called a token server
  1134. 41:35ID and you need to copy this.
  1135. 41:40Then you need to go back to VS Code.
  1136. 41:42And then you need to paste it in here
  1137. 41:43where it says LiveKit sandbox ID.
  1138. 41:48And then you need to save this by
  1139. 41:49pressing control or command S.
  1140. 41:51Now we need to install something called
  1141. 41:53Flutter and first off we need to install
  1142. 41:55the VS Code extension for this. So,
  1143. 41:57first you can click here on extensions
  1144. 41:59and then you can look for Flutter and
  1145. 42:01then click on this one here. And over
  1146. 42:03here would say install. I already have
  1147. 42:05it installed, that's why it says
  1148. 42:06uninstall, but you would simply need to
  1149. 42:08click on it to install it. After you
  1150. 42:10install the VS Code extension, we also
  1151. 42:12need to install it so we can use it in
  1152. 42:14our terminal. And the easiest way I
  1153. 42:16found to do this is to actually ask the
  1154. 42:18coding agent. For this, we can simply
  1155. 42:20say
  1156. 42:22install Flutter for me.
  1157. 42:26So, now it's done installing Flutter,
  1158. 42:28and we can check if this worked
  1159. 42:30correctly by opening a new terminal.
  1160. 42:33Command shift P, and then create new
  1161. 42:35terminal PowerShell.
  1162. 42:39And then we can type in Flutter
  1163. 42:43--version.
  1164. 42:46And here you can see a Flutter 3.47
  1165. 42:49installed. Now, if your coding agent is
  1166. 42:51not able to install this for you
  1167. 42:52correctly, then you can also try to
  1168. 42:54manually install this. For this, you can
  1169. 42:56simply go ahead and Google Flutter
  1170. 42:58install, and then click on this first
  1171. 43:00link over here.
  1172. 43:01And then click on quick start. And then
  1173. 43:04you can select your operating system,
  1174. 43:05for example, Mac OS. And then you can
  1175. 43:07follow these installation instructions
  1176. 43:09instead. Now, if you want to run this on
  1177. 43:11your Android phone, then first you have
  1178. 43:12to activate developer mode. For this,
  1179. 43:14you need to go into the settings, and
  1180. 43:17then you need to look for
  1181. 43:19build number.
  1182. 43:20And then you need to click on this for
  1183. 43:22seven times in a row.
  1184. 43:25And now I can see we are in developer
  1185. 43:26mode.
  1186. 43:27And now you need to look for developer
  1187. 43:29options.
  1188. 43:35And then you need to scroll down a
  1189. 43:36little bit. And down here, you have to
  1190. 43:38now activate USB debugging.
  1191. 43:44Now, make sure to plug in your phone
  1192. 43:46into your PC or laptop.
  1193. 43:48You probably also need to click on allow
  1194. 43:50when you see this notification when you
  1195. 43:52plug it into your PC.
  1196. 43:54And then we can go ahead and go into the
  1197. 43:56Flutter project folder, which is CD live
  1198. 43:58kit Flutter starter. And then we can use
  1199. 44:02the following command to see the
  1200. 44:03connected devices, which is
  1201. 44:06flutter devices.
  1202. 44:09And now I can see here that my phone is
  1203. 44:11connected to my PC. And then we also
  1204. 44:14need to make sure that we install all
  1205. 44:16the dependencies with this command over
  1206. 44:18here, flutter pub get.
  1207. 44:22Now that's installed, and then we can
  1208. 44:24use the following command to start this
  1209. 44:25now up on our Android phone, which is
  1210. 44:28flutter run -d and then the name of the
  1211. 44:31device. In my case, it's HD1900.
  1212. 44:36All right, so now it's done. And if you
  1213. 44:38want to connect to your agent now, also
  1214. 44:40make sure to run your agent with this
  1215. 44:42command again, UV run python source
  1216. 44:44agent.py dev.
  1217. 44:46And now I can try this out on our phone.
  1218. 44:48Now you can see that I have this app on
  1219. 44:50my phone, and now we can try this out.
  1220. 44:58Hey Jarvis, how's it going?
  1221. 45:02>> Good day, sir. Things are proceeding
  1222. 45:04with their usual, almost mechanical,
  1223. 45:07perfection. And what might be required
  1224. 45:09of me today?
  1225. 45:10>> Uh can you see my PC set up here?
  1226. 45:16>> Yes, sir. I see your monitor. It would
  1227. 45:19appear to be displaying a brightly
  1228. 45:21colored wallpaper, seemingly featuring a
  1229. 45:23house on a small island.
  1230. 45:25What specifically about it requires my
  1231. 45:27attention?
  1232. 45:28>> Yeah, it's actually from Dragon Ball. Uh
  1233. 45:30can you go ahead and uh look up Dragon
  1234. 45:33Ball on the internet for me?
  1235. 45:40>> Naturally, sir. I have procured
  1236. 45:42information regarding Dragon Ball for
  1237. 45:44you. What specifically would you like to
  1238. 45:47know about it?
  1239. 45:48>> All right, so this works now. If you
  1240. 45:50want to run this on an iPhone instead,
  1241. 45:52it's actually the exact same process,
  1242. 45:54but you also need to activate developer
  1243. 45:56mode on your iPhone. I'm going to link a
  1244. 45:58video in the video description down
  1245. 45:59below how to do that. It's actually
  1246. 46:01really similar.
  1247. 46:03Thanks for watching all the way to the
  1248. 46:04end. Like the last time I actually had a
  1249. 46:05lot of other features planned for this
  1250. 46:07video as well, but this one turned out
  1251. 46:09to be even longer than the last one. For
  1252. 46:11example, it's actually not that optimal
  1253. 46:13that you can only use the browser tool
  1254. 46:14on the PC and not on the phone as well.
  1255. 46:16So, I might add this feature sometime in
  1256. 46:18the future. But, the cool thing here is,
  1257. 46:20as I said, if you want to add any
  1258. 46:21feature, you can just ask the coding
  1259. 46:23agent to do it for you. But, for more
  1260. 46:25complicated features like browser
  1261. 46:27control on a phone app, I would actually
  1262. 46:29go ahead and use a paid tool instead of
  1263. 46:31a free one because they just work way
  1264. 46:33better. Additionally, if you run into
  1265. 46:34any issues for this tutorial, then you
  1266. 46:36can also ask the coding agent, or you
  1267. 46:38can also leave a comment down below
  1268. 46:39about that. Don't forget to like and
  1269. 46:41subscribe, and I'll see you in the next
  1270. 46:42one. Bye.

About this transcript

This page contains the full transcript of How to build a JARVIS AI Voice Agent for FREE | Full Livekit Tutorial (2026) by Thanh-y David Nguyen, generated from the public captions YouTube serves with the video. The transcript has 8,524 words across 1,270 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.

What you can do with it

Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.

Free YouTube transcript tool

YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.