I Built a Personal AI Assistant with Laravel
Chapters10
The presenter outlines building a personal AI assistant in Laravel that can search the web, manage calendars, schedule tasks, and evolve its own personality.
Build a fully functional personal AI assistant in Laravel using the Laravel AI SDK, custom tools, and real-world integrations like calendar, web search, Telegram, and even deployment to Lava Cloud.
Summary
Kristoff of the Laravel channel walks through turning a fresh Laravel app into a personal AI assistant powered by the Laravel AI SDK. He demonstrates installing the SDK, publishing config, and creating an agent (a PHP class) that can chat in the terminal and later in Telegram. The tutorial emphasizes adding practical tools—web search, local time, and a read-calendar ICS parser—to give the agent real-world capabilities. He shows building a local time tool, an ICS calendar reader, and a scheduler that stores recurring tasks in JSON, all orchestrated via an artisan command. The talk covers the agentic loop concept, where the model uses tools to fetch data and prompt again, rather than relying on static knowledge. Kristoff also introduces the idea of a “soul” to tailor the agent’s personality, and demonstrates writing files and deploying apps from the bot to a Lava VPS, including GitHub repo creation and Lava Cloud deployment. The result is a (surprisingly) cohesive workflow for a personal assistant that can interact via terminal, telegram, and automated tasks. The video blends code walkthroughs with practical insights on reliability (noting time accuracy and tool boundaries) and ends with encouragement to customize with any tools you need.
Key Takeaways
- Laravel AI SDK enables end-to-end personal assistants inside a Laravel app with tools, agents, and prompts.
- Entropic model is shown as a selectable AI backend; credentials are placed in the environment file via Entropic API key.
- Create a dedicated agent (PHP class) to represent a personal assistant and drive conversations via artisan commands.
- Add practical tools (web search, get local time, read calendar ICS) to extend the model beyond its trained knowledge.
- Implement the agentic loop: model uses tools, prompts again, and repeats, enabling dynamic interactions.
- Store and manage scheduled tasks in a JSON file, then trigger them with a custom artisan command that runs every minute.
- Integrate messaging channels like Telegram by adding a send-telegram tool and setting up a bot with webhook for live interactions.] ,"Read calendar data with ICS parsing using a PHP ICS parser package to produce human-readable summaries for tomorrow or today.","Define a ‘soul’ for the bot via a markdown file to guide personality and behavior, and persist it to storage so new conversations reuse preferences."] ,"target_audience":"Laravel developers who want to build AI-assisted apps with real-world integrations (calendar, web search, scheduling, messaging). It’s especially useful for those curious about agent-based AI using Laravel AI SDK and tools, and who want to see practical deployment patterns (Telegram, Lava VPS, GitHub) in one end-to-end demo.",
Who Is This For?
Essential viewing for Laravel developers exploring AI assistants and agent tooling, including practical integration patterns with Telegram, ICS calendars, and deployment workflows.
Notable Quotes
"What if you could build your own AI assistant with Laravel? Laravel's AI SDK is incredibly powerful."
—Opening claim about the SDK's power and the project goal.
"This is our personal assistant. We have instructions here and messages from past conversations to give context."
—Shows how to structure the agent with context and ongoing conversation.
"The agentic loop… normally you have a prompt and a response, but now the model can use tools and prompt again."
—Explains the core loop that makes the assistant dynamic.
"We can enhance with tools like Get Local Time and Read Calendar to provide real-time data."
—Demonstrates adding practical tools for accuracy.
"Behind the scenes I turned this assistant into something that runs on a Lava VPS and deploys via Lava Cloud."
—Shows full-stack deployment workflow from bot to production infrastructure.
Questions This Video Answers
- How do I build a personal AI assistant with Laravel and the Laravel AI SDK?
- What is an agentic loop in AI apps and how do tools enable it?
- How can I schedule tasks in a Laravel AI assistant and persist them in JSON?
- How can I connect a Laravel AI assistant to Telegram or other messaging platforms?
- What are practical steps to deploy a Laravel AI assistant on Lava VPS and Lava Cloud?
LaravelLaravel AI SDKAI AgentsEntropicWeb search toolLocal time toolICS calendar parserTelegram botLava VPSLava Cloud deployment
Full Transcript
What if you could build your own AI assistant with Laravel? Laravel's AI SDK is incredibly powerful. You can generate images, transcribe audio, create structure output, and there's so much more. But today, we're going to push this even further. We're going to build a fully functional personal AI assistant. One that can search the web, check your calendar, schedule task, and even develop its own personality step by step from the beginning. Let's get into it. All right. So, we're starting here with a brand new level application. We're going to do everything here together from the start till we see some really good results here.
So, we're going to build our level assistant here. We don't need a starter kit. We want to use pest here and we want to use level boost which will be helpful for us on the way. And we're going here with SQL light. Um, anything else? Yeah, let's run and build our assets here. And then we're also going to need to define some settings for level boost here at the end. Here we are. We want our AI guidelines, ah, and skills and the MCP server. And we only used the cloud code here um, for this project.
All right, we're good to go. And before we take a look at the code, we're also going to require our level AI SDK composer require level AI. So this is our AI SDK package which brings a lot of features in order to work with your favorite AI models here and to bring some really cool functionality to your application. But what we are going to do will be a little bit different today. Okay. So we have our Laravel application here. We have the Laravel AI SDK already installed. We now have our Oh, I think we still need to publish the window files.
Yep. So, let's do this. We're going to need to migrate because we're going to create some new tables here for storing conversations for later. And what this also gives us is this AI config file. And here you need to define which AI models you are going to use. I'm going with Entropic here for this example and I have already put inside the environment file my credentials for the entropic API key which you still have to do if you haven't but of course you can use any of the other models that we support here too. Okay, so let's get started here.
We're going to start here by creating a new agent. PHP artisan make agent and think of agent as a specific support assistant in a specific field that you want it to be used to. This could be some kind of chatbot that you have on your website to help your users, but it could also be some kind of support on your backend side where you can talk through your invoices and a lot of different things that you can do. But basically it's just a PHP class and we're going to call ours personal assistant and we don't need structured output.
So you can get some text output as a response or you can get structured output um if you would um use or transform this data anywhere else. But we're going we're good with text here. Okay. Now let's bring this up. So this is now our personal assistant here. So this is what the artisan command created which comes with the level AI SDK. So we have this personal assistant. We have some instructions here. You helpful personal assistant. Let's keep it for that. We have here some messages which we can could load from the database to give the model context about our past conversations and later we will also talk about tools.
Okay. But let's try to get this running. And we can easily create now a new personal assistant and give it a prompt. And then we will receive the response. You could do this inside your route file, but I prefer some kind of more conversational like structure here. And we're going to do this with an artisan command that I have already prepared. And here we have our command which will trigger with um let's suggest chat. I think that's even easier. And what this will do basically I'm not going through every detail here but basically here we're creating a new instance of our personal assistant and then we are creating this loop here.
So as long as we get some results back we have this ongoing conversation inside the terminal. We take some input from the terminal and then here we're creating a new task and then on the assistant we're running a stream method where we put the input in and then we're going to stream the result back. So it's just creating a simple terminal conversation with our AI model which is perfect for those kind of things that we are um going to do here and just in general for testing. So let's give this a try. PHP art design chat.
All right. And let's see if we get a response back. So the only thing that I've set up so far is I've created the agent which is a PHP class. I have connected um our SDK with the entropic model here which I've been doing by providing my entropic API key in the environment file and then I created the artis command here to have this conversation. Okay, so um it seems it's working. we get something back and now we have access to this model which as you already know has just a lot of information is trained on a lot of data and can tell us a lot of things like who painted the Mona Liser and we should see yeah Mona Le was painted by Leonardo da Vinci.
Yes. So um you all know those models are super um amazing. think they have a lot of information but um when you've been using chat GPT or other tools you're already used to a lot of more features that are actually not really included inside those AI models so um let me show you what I mean what is the current time in Vienna and this is a very trivial thing you can search for it on the internet it's very easy to find but yeah those AI models they don't have access to real them data they have no idea what the current time is in Vienna right now because they are just trained on some specific data and they don't know that information.
So what this means is when you're using something like chat GPT or other tools that they are AI models but they are enhanced with some specific tools in order to example search the web. I'm sure you have seen this before. It also tells you I'm searching the web for something. So these are things that the model is not trained on but um there are some tools around those models which can grab some information from the internet provided to the model again and then you get a response and then something like this should also be working and some of those tools are already built in.
So let me show you one. So, we go to our personal assistant here and I showed you already down here we have all the tools that we can use and there's one called search or is it web search? Yeah, it's web search. So, it's one of the tools that already comes with the AI SDK and these are some tools that are connected to some specific models like the ones from OpenAI or Antropic. Okay, now let's go back here. Let's try this now again. Let's create here new chat. And now let's ask, hey, what day is it in Vienna?
Okay, so now it already gets um the date back, which it also couldn't have done before. But let's now also ask about the time. And what time is it in Vienna? Let's see if this is now working. So the only thing that we provided now to the AI model is a specific tool which um then gets some results from the web and provides it back to the model. So it's currently 117 p.m. in Vienna. And if we take a look here, this is yeah completely wrong. It's a couple of hours wrong. And this just means that that even if the model can get some data from the internet, it doesn't always get the right thing back.
and it's losing some kind of information in order to get even simple things like this right. So this is very interesting to understand and good to know for you that those are things even if they get it from the internet aren't always right. So what can we do about this? We can create our own tool. So PHP artis make tool and let's call it get local time. And now back here, let's take a look at this tool. So a tool in Lavl is also a PHP class implements tool interface. And then we define what it does.
Get the local time in Vienna. For us, we're just going with Vienna here where I'm from. And the only thing here that we're just doing, let's see if I can get it right. Time zone year Vienna to date time string. Perfect. And then the only thing left here inside our assistant, we are now providing the new tool here. Get local time here. And if we now try to start the chat again, what is the current time in Vienna, we should see hopefully now a better result. Again, always with AI, you never know 100% sure what you get back.
But yeah, this looks now way better. It's now 4 11 p.m. And this is how you can enhance your AI model with some information that we create that we provide like the current time which is very easy for us for our PHP level application to give back the time for RA. And this is here how we can combine very strong AI models with some specific tools that help especially in our use cases. And by the way, this is also called the agentic loop because normally when you have just a prompt and you get something back from the AI model, it's you have a request and you get a response back.
But now we're inside this kind of loop where the can use some of our tools and maybe it use information to do another prompt and then maybe go back and forth. And there's also limit that you can set in your lab application in how long this loop can take. But yeah, this basically makes it super powerful. Also, when you think about creating application going back and forth to create something like a level application on its own, those tools need a lot of help. And yeah, through this aic loop, this becomes now super super powerful. And again in this video I want to focus on this kind of general personal assistant that you probably already used to with open claw and other tools out there which yeah just sit next to you on telegram for example and provide you with all the information during your day and keep conversations going for a long time.
So, this is a little bit where we want to go in here and I'm going to show you how to create some of the tools to make it a little bit more like a personal assistant and not like the usual things that you used to do. Okay, so the next thing that I really love about my open claw bot is the integration into my calendar. So, my open claw bot can give me a summary every day about what's going on in my calendar. What do I need to know for the next day? And I want to um include here something very similar.
So, we're going to start this by creating where do we put this? Storage app. Let's make here a new file and let's call this calendar ICS. So, we're providing here some calendar information through a file. This could also be through a public [snorts] available calendar that is on the web. Then you could provide a UL. But in this case, I'm going to go with this IC file. Okay. is I've passed in here some events for hopefully for today and tomorrow. Okay, let's go back here. So, what do we need now? We need now another tool.
Make tool and let's call this read calendar. Okay, description. What can this do? Read the upcoming events in the calendar. Okay, this looks good. And now, how we're going to do this? I'm going to use a specific p package in order to parse the ICS file which is called OMI call parser. In the meantime, let's bring in here some code. Here we are. Here we're now creating the new I call paser from the package. And we're going to use the calendar file which we have just created. We're going to pause it. We're just making a collection here, looping through all the events, filter some out, and yeah, get some specific information for these events back.
And then we're going to pride provide some text here in order for what's going on. And then also, if we don't have any upcoming things in the next three days, we're just returning a string here. Okay, I think that's it. Let's go back to our personal assistant. Let's add this new tool, read calendar. And let's start here a new chat. What do I have in my calendar for tomorrow? And let's see if this is working now. And it looks like it's working. Let me check the current time. Today is Monday. Yeah, in order to find the right thing, the AI also needs to know what current date it is.
And it did that right. And tomorrow I have team stand up, record a YouTube video and some guitar practicing again finally. Okay, it looks like a busy day. And yeah, isn't it cool how easy it was now to just create this little tool here which I connected to a specific calendar file again for you? You might use a public URL to your Google calendar or what you're using and this would work as well. And I really think like the combination of AI with some specific skills like I mean in fact we're just creating some skills here.
There's tools here to enhance our AI model and to connect it to yeah our real life to my life and to make it more personal. I think that's exactly what we're going to need here for this personal assistant. And if we keep continue thinking about this example where I get my morning message every day. So we now have a tool to read the calendar. But how would it work to schedule something that then I see every day in the morning like 9:00 a.m. So this is now a little bit more tricky. It's not difficult but it's interesting to think about how this could work.
We are used with L application to have maybe some artisans command and then the scheduleuler something is running and yeah we have something similar but also something a little bit different. Okay let's see what I want to do here. First inside my storage here I also want to create a new file and let's call this scheduled tasks which will be a JSON file. Okay, this is empty for now. And think of this that we're going to store here some recurring task that the AI or maybe a tool then later I mean I already know it's going to be a tool that a tool later can read and check.
Okay, is there something that we need to trigger here? And now we're going to create a new tool. Again, art is just a shortcut for my PHP artisan art make tool. And we're going to call this schedule task. Okay, let's take a look. What should this do? schedule a recurring task for a specific time and message. So when you think about this, we're going to have a list of prompts and the prompts will contain some information like give me what's in my calendar for the next day for example and we will have when do we want to check this and then we'll probably also just keep when we create this and also what I found the more specific you can be here in those descriptions and instruction especially for your AI assistant um the better it will work.
All right, let's grab the task file again. We have this under storage path. What did we call it? Schedule task. Okay, here we go. And then for the tasks itself, we are checking if the file exists. Then we want to chase and decode the file. And if not, we're just returning an empty array. Okay, I think we're good to go here. And now we're going to add something new. So, and maybe let's go down to the schema first here. So, in the schema, we define what data we are expecting. And we want to expect a message, which is a string and required.
And then we will also have the time. So, this means up here we're going to set now the time with what we get from the request, which is an array time. And then the same for the message. And then we're also going to add created add now the timestamps. Yeah, exactly like this. And then we're just putting the file back to where it came from. File put task file. And the only thing left is we're going to return a string task scheduled successfully. Okay, I think this is looking good. Let's give this a try by checking out our assistant.
Let's provide this new schedule task and let's see if this works. Let's start a new chat. Please create a schedule task for my morning message 9 a.m. showing my calendar events for the day. Okay. Okay, so if everything working out, the AI will be smart enough to see, okay, we're talking about a scheduled task. There's this tool which we which can edit and then this tool should addit to our JSON file. So let's see if it's working as we expected to. All right, what did we get back? Sure. Let me check the current local time.
Mhm. Mhm. Summary of what was set up. Scheduled time every day 9:00 a.m. local time. Mhm. Okay, let's take a look at the file itself. And yeah, fair enough. We have now our first entry time message. Good morning. Here are your calendar events for today. And actually, um, that's not what I wanted to. It just provided in some information that it already had through the calendar inside this message here. But that's actually not what we want. Okay, let's see how we can change this. schedule a recurring task. The task will prompt the AI with the given message at a specific time every day.
All right, I think this should be better now. Let's give this a try. And let's start with something else. Please add a recurring new task to send a new dev show every day at 9:00 a.m. So this might be a little bit simpler. Let's see if this is works before we move on and try it with our calendar events. But let's see if we got it right this time. Okay, what do we have inside this? Okay. Send a new dev choke to the user. Okay, this looks better. Now, let's try now also with please also add a new task for 10:00 a.m.
every morning that gets my calendar events from that we have a tool for that and messages me about it. So, I really hope that it now was clear enough and that it's now easier for the eye to understand what we really want to do here. All right, now we're second one. Read today's calendar events using the read calendar tool. Okay, this looks now way better than before. Okay, so far so good. We now have a list of those things that we want to yeah run every day. So how are we going to trigger this now?
And now it gets um back to where how we would use it with level. So my plan is to set up now an artisan command. Let's do it right here through level IDE in PHP storm. And let's call this run scheduled task command. And now here we want to run a schedule task command. And then we can set in the kernel or in our console php file here that we want to check this through a chron job like every minute. So let's start by grabbing our task file which we have right here. And if this does not exist yes we can do it like this.
But then for our task yes we're going to get the content of the file. We're going to decode it. And let's bring this in here. So, we also want to get now the current And we're going to format it to be like just H and I. We don't need the seconds because we're going to check every minute. So, we need to make sure that it is the same as Oh, by the way, let's check it. Have we red we done this the right way? So, yeah, looking good. Okay. So now we can loop over all of our tasks.
Yes, we want to check if the tasks time is the same as the current time. Then we're going to provide an info running schedule task. I don't need the message. I just want to know that something is running. And now we're getting a response by using our personal assistant again. Let's create a new instance. And we're going to prompt it with the tasks message. And then for this example, we're going to info out a string version of our response. It might just be a string. I think it should just be a string. I don't I don't think we need that cast.
Okay. Um let's try to trigger one of those here. Let's go with the send the death choke. Let's say this should be my current time is now 4:37. So let's make this 438. And let's check out have we defined an signature run schedule task. Okay, this is fine for me. Now let's give this a try. PHP artisan run schedule task. I think it's doing something. And here we have it. Let's take a look. Um, perfect time for death show. Debugging is like being a detective in a crime movie where you're also the murderer. Yep, that's true.
And here's a bonus one right at it. Okay. Why do programmers always mix up Halloween and Christmas? Because October 31 equals December 25. 25. Okay, I didn't get that one because in October 31 is the same as 25. Okay, maybe you can help me out with that. I have no idea why this is the case, but yeah, it was working. We have now a schedule list. We have an Addison command. If this is now scheduled and running every minute, yeah, for the right time, we now going to prompt our AI with a stored message here.
And the result, we're going to print back. But of course, where would we show this here? Having this here in the terminal wouldn't even work. So having our chat here and scheduling a task and it's going to be triggered it we can't bring it in here. So that's why we would use a different interface in order to work with our personal assistant like you've seen with many others for example WhatsApp or what's also very famous and being used a lot is Telegram because it's very easy to create a telegram bot and we're going to create a simple one here or we're going to use one which I have already created but I'm just going to show you how we can trigger our messages to Telegram as well via a tool.
So this means we are going to create a new tool. Call it send telegram. Here we are. Send a message to a telegram channel. Yes, that's correct. I'm going to provide in here some prepared code so that we save a little bit of time. Let's import here the facade. So what we're going to going going to do here, we're just making a simple HTTP post request to a specific Telegram bot. I have already set up inside my services config file my Telegram bot token as well as the chat ID. So these are two things that you need.
The bot was already created via bot. We had the bot which is an account on Telegram where easily can create a bot or many bots. We're providing here the text which is a message and we're providing it as markdown. Okay. So this means we also need to change this here to the message we want to send. Okay. Let me show you my bot. So here I have my Laval bot. We can just start here new conversation. There's nothing in here yet and we're just trying to see if we can send something now through our personal assistant to Telegram as well.
So, let's create here a new chat. Oh, I think we forgot to add the new tool here. Yep, new send telegram. Here we go. Send the telegram test message be funny. So, let's see if we get now a message here. If we have set up everything correctly, all the tokens, all the API endpoints. Nothing here yet. Let's take a look what's going on. I'm sorry, but I don't have a send telegram message tool available right now. I think I need to start this again. Send a telegram test message. I think we started the conversation and then I added the tool.
So, let's see if this is now working. Let's go back here. Yeah, here we have our test message. You can see this is working. Okay. And yeah, when you think about it, we can easily now think about how we can also receive messages and then we could spin up the whole thing in Telegram. But before we think about that, there's one more thing that I would like to show you here. So, I'm sure you've seen this before with personal assistants like OpenClaw and others. You have this kind of soul idea. So, let's create a new soul for this bot.
which is a markdown file. So the soul is some kind of yeah the soul of your personal but how should it be? How should it treat you? Should it be funny? Should it be helpful? What are the things where it should help you? So we're providing some specific information in order to help the bot help us better. And I don't want to just put something in here just myself. I want to have the full um flow like you would see with other bots here where when you start a new conversation it checks if it already has a soul and if not it just asks you hey I don't have a soul yet please help me define this and then we're going to do great things together and we're going to start this inside our assistant here where we already have some instruction which is very similar to what we um call sold here.
So what we're going to do we're first checking our soul path which is I think almost right soulm file php. Did I get this wrong? Oh, I did get this wrong. Why did nobody tell me? You probably all told me. I just didn't hear you. Soul MD file. And then our soul equals file exist. Yeah, I think I'm good with this here. And then we're going to start here. If we don't have a soul, what we want to do, I'm going to provide in here some predefined information. All right. So, if there's no soul, you're a new personal assistant that hasn't been set up yet.
Ask the user who they are, what they like you to help with, and how you should behave. Once you have enough info, use the right file tool, which we haven't yet. save the preferences to storage app soul as a markdown file. Okay, keep it concise and structured. And if we have already a soul, we're just going to provide the soul instead of our instruction here because then our soul is going to be our instructions. In order to write this file, we need another tool. Let's do this really quickly. So, it's mostly about creating new tools here.
Art make tool and let's call this write file. write content to a file. So there are a lot of things that are seem like straightforward to us like writing a file, reading a file, but these are all things that you have to provide those AI models in order to really use them in the right way. So first we are trying to get the path which will be inside our base path and then we're going to provide from the request a path. So we assume this will be inside our application. So these are some guide um yeah guard rails here that we want to make sure we use in order that we don't write anything outside of this application for now.
And then we want to make sure we're this facade here ensure directly exist and we're providing here um from the request the path and then we're just going to file put to the path the specific content that the AI wants to write here. So this means here we're going to have content and we're going to have the first thing path and here content with aity. So let's check again and then returning a string file written to path. Okay, so we have our path here. We're checking if the director exists and then we're just um writing to this file.
So let's go back here to our personal assistant and let's make this write file tool because that's what we call it. Right. Right. Okay. So what do we need to do? We need to provide our new tools here. So we have one which is called new right file and I think I think this should already be it. Let's give this a try. Hey so I should see now our instruction and it does not andh I think I know what this is. Yeah I think because it put in the PHP tag. I guess that's when I already should have noted that this is not a net def file.
I guess you all saw it already. Let's try again. Okay, we have also an issue here. Text content blocks must contain non white space. Okay, I think we can fix this here. Here. Yeah, I think we need to trim this here. Okay, one more try. Chat. Hey. Okay, it's thinking. Let's see what we get back now. You can do it. Yeah, this looks much better. Hey there. Welcome. I'm your new personal assistant. I'm still blank slate. So, let's fix it. To get set up properly, I have a few quick question. Who are you? Your name, whatever.
Context feels relevant. Sharp lifestyle. What would you like me to help with? How should I behave? Hey, um Kristoff working at level as defil. I have a wife and two kids and I need a general assistant for work and my private life. Please be very helpful, kind but funny too and tell me when I am wrong. Okay, let's see if this is working now. Okay, it cannot. Let's see. File exists. I think the error is here. Oh yeah, this is wrong. You want to check the directory the name of the path. Yeah, I think that's how it should be.
Oh, those AI autocomp completions, especially here inside an IDE, are often way wrong. Okay. And I [clears throat] didn't check it. So again, my fault. So let's say, hey again. Oh, now I have to write this all again. But we can do this. Mhm. I am Kristoff working at helpful and tell me when I am wrong. Okay, one more time. So I hope we got it right now. [laughter] [snorts and gasps] so you're working at LA and raising two kids with your wife. Honestly, I don't know which requires more debugging. I do know which one I do.
Okay, let's take a look at our cell file. Yes, we have something in there. Now, of course, this is now formatted in a really nice way. One thing where AI really shines. So, this means if I start now a new conversation, it should not ask us anymore about our soul file. It should just be here and help me. Hey, where I am working? I hope this is good English, but I just wanted to ask you're working at levels. Yeah, so it knows the information now. It knows much about me and yeah, this is exactly how it works with other of those nice tool where you give it a soul soul which I really find really interesting and nice because yeah, it's it's some kind of assistant that you will work a lot with and having some kind of soul for it feels natural to me.
So I really love how this is working and as you've seen it wasn't much that we had to do for this. We now have our right file which we now can use for other um tasks as well but now because now it can really write any file inside our application. But this also means we can add a soul if there isn't one for our bot yet. So that's a great foundation we already have here and it's already pretty powerful. But I want to show you where you can take this. So behind the scenes I've taken this assistant and turned it into something that runs on a lava VPS fully available through Telegram.
Let me show you. Okay, so here we are back. The same project but I added some more tools. So now this project this assistant can now run shell script. It can run artisan command. It has a dedicated projects folder because this is now living on the LA VPS on LA forge. Since this is just a level application, I can't install it there on Forge like any other site. And the only thing that I had to do was to add my environment files for my AI models, but also for Telegram. And I need to edit the web hook for Telegram in order to connect this Telegram bot to this instance of the application.
And now here we are. This is now fully running on the Lava VPS. And also Telegram now works um for sending but also receiving. So this integration was also now fully made ready to work with us. What would you like to do? How are you doing? Just to show that this is working and then we'll try some more advanced stuff. Okay. So hey, please create a new level 13 application in your projects directory and push it to a new private GitHub repository called lava 13 bot. So I also gave it access to my GitHub account.
So it now should also be able to create a repository for a new application which is also going to create on the forge server in its projects directory. Let's see if this is working as I wish that it does. Okay, I'm done. Created a new level 13 application in the project folder on the forge server. Okay, new repository. And let's see. Yes, I do hear new repository level 13 bud made private one. And it looks like we have some commits here. Okay, so far so good. Let's try something. Now, let's see if we can edit some of those files too.
And I created a new prompt here from another AI model to help me to yeah change some of the files. So here we're just saying please alter the welcome plate file. Make it futuristic dark theme animated background. Just so that you can see we can also change files here and then after that so hopefully this is going to work then we want to deploy this to lava cloud too. So I also added a new tool to this assistant which can deploy it through the lava cloud API. Okay. Okay. I think this looks good. Let's give this a try.
So please deploy this application to Lava cloud as a new app called Lava 13b but made in the region EU central one. So I hope I'm now clear enough. So the conversations memory is not as good as it should be. So let's see if this bot can get this right and finally deploy our app to Lava Cloud. Okay, this already sounds good. Deployment is pending. Let's take a look here. Oh, we can already see it right here on Laval Cloud. Um, you can see it's being deployed here, which is just amazing when you think about it through our selfcreated Laval AI SDK, but we are now just deploying new applications that the bot built for us on its own VPS.
And yeah, um, let's take a look. And here we have it. L 13 future ready. This app was created, customized, and deployed entirely by an assistant. And it's true. And we yeah made it work to create an application on our Laval VPS on Forge. Um the bot pushed it to GitHub repository and we could also deploy it to Lava Cloud just all in this video which I think is just amazing. And that's it. I hope this gave you a really good understanding of the fundamentals of agents tools conversation and how it all comes together with the Laravel AI SDK.
But this is really just the beginning. You can add any tool you want, customize it to your personal needs, and build something that's generally helpful to you. That's what's important, and that's what's so cool about Lava. All of this is possible right now inside the framework that you already know. Thanks for watching. Hit the like and subscribe button, and see you the next time. Bye.
More from Laravel
Get daily recaps from
Laravel
AI-powered summaries delivered to your inbox. Save hours every week while staying fully informed.









