Interacting with Laravel Cloud via the CLI
Chapters24
Hosts Dan and Margot introduce the Laravel Worldwide Meetup and set the stage for the session, including a quick check-in about travel and the upcoming speaker.
The Laravel Cloud CLI speeds up deployment and management by letting you do almost everything from the terminal, with smart defaults and agent-friendly features.
Summary
Joe Tannenbomb showcases the Laravel Cloud CLI for the Laravel community, illustrating how you can bypass constant dashboard switching by performing deployments, environment setup, queue management, and live testing entirely from the terminal. The CLI is installed via Composer as a global package, and Joe walks through logging in, enabling tab completions, and installing agent skills to streamline deployment workflows. He demonstrates generating a new cloud app from a local project (even when not in a git repo), auto-detecting environment needs (like inertia SSR and websockets), and auto-picking build commands for PNPM. The demo emphasizes live status updates, interactive previews in the browser, and the ability to telescope into the dashboard or browser straight from the CLI. He also dives into advanced topics like managed queues, Tinker-like cloud editing, command history, environment variable handling, usage monitoring, and vanity tasks like cloud IP lookups. Throughout, the emphasis is on reducing context switching, empowering agents, and keeping cloud features in sync with the API. The session closes with Q&A that covers completions, Windows considerations, security concerns around agent tokens, and a nod to open-source contributions. The net takeaway: you can orchestrate most of Laravel Cloud from the CLI, with one-stop access to deploys, queues, envs, and live testing—all while staying in your editor of choice or terminal.
Key Takeaways
- Installing the CLI is as simple as: composer global require Laravel cloud CLI, then cloud login to authorize the session.
- Completions and agent skills dramatically improve productivity by auto-completing commands and bridging CLI actions to agent-driven deployments.
- Cloud ship and cloud deploy guide you from a local project (even outside a git repo) to a cloud app with sensible defaults and auto-detected features (PNPM build, inertia SSR, websockets).
- Managed queues scale work by responding to queue pressure, using a dedicated Q workers pool (configurable from 0 to 25 workers).
- Cloud tinker lets you interact with the cloud-hosted app database using an in-terminal editor or editor-agnostic flow, with live feedback when you save changes.
- You can manage env vars directly from the CLI and push changes to cloud environments, with options to append or replace variables.
- Usage monitoring via cloud usage commands gives quick visibility into spend, resources, and bandwidth for the current period.
Who Is This For?
Essential viewing for Laravel developers who want faster, more integrated cloud deployments and for teams that want to empower agents to operate against Laravel Cloud from the terminal. Great for those who live in the CLI and want parity with the dashboard without losing features.
Notable Quotes
"We're going slideless today. Zero slides. We're just going to do a lot of terminal commands and you're going to see how to interact with Laravel cloud from the CLI."
—Joe opens the demo with the CLI-first approach.
"This reduces context switching. So, you can do just about everything you can do in the cloud dashboard from your terminal, which is pretty great."
—Core rationale for the CLI's value proposition.
"Composer global require Laravel cloud CLI. Okay, that's all it is. It's a global composer package."
—CLI installation details.
"Managed cues are great because they respond to Q pressure... it’ll fan out the jobs to disperse and make sure that the jobs move through at a reasonable pace."
—Explanation of managed queues.
"You can tinker in your cloud app directly from the CLI using cloud tinker, or edit in your editor and push changes live."
—Cloud Tinker workflow explained.
Questions This Video Answers
- How do I install and log in to the Laravel Cloud CLI for the first time?
- What are cloud managed queues and how do they scale with queue pressure?
- Can I deploy a non-repo local project to Laravel Cloud using the CLI?
- How does cloud tinker work and what are its limitations?
- What is the difference between the Laravel Cloud CLI and the dashboard for day-to-day tasks?
Laravel Cloud CLILaravel CloudComposerPNPMInertia SSRWebsocketsManaged QueuesCloud TinkerCLI CompletionsAgent Skills
Full Transcript
Heat. Heat. Hey, hey, hey. Happy birthday for you. Hey. Hello world. We're live. Welcome to this early June 2026 edition of the Laravel Worldwide Meetup. My name is Dan Sepula. I'm a developer at Vehicle and along with my co-host Margot Tvaris, we're thrilled to once again bring you a presentation uh from the uh this great Laraveville community that we love so much. Speaking of my co-host, Margot, how are you doing today? Doing pretty good, Dan. Getting a little uh off the jet leg, but feeling pretty great. Recovering from a long long trip over the ocean, but uh great to have you back.
Uh I think uh our speaker today is suffering from the same afflictions. So, we'll get uh we'll get Joe in here in a moment. Uh before we do that, we've got a few community things to to cover. What do we uh have going on here, Marggo? Awesome. Thanks, Dan. So, just going over some community an community announcements. If you're not aware of them, we just like to bring it to your attention so you know what's going on Laravel community. So, if you haven't heard about Laravel news, they're a great resource to stay up to date with what's going on in the community.
Um they do a great job covering releases, tutorials, and everything going on each and every week. And you can sign up for their weekly email newsletter. Um and you can also check out their podcast with Jake Bennett and Michael Dinda. They have a lot of things that they talk about that are pretty interesting. So, you can check them out at laravellwe.com. I think I just saw in the last mailer that came out on the weekend that was 12 years of the Laravel news uh email going out every week. So, kudos to Eric Barnes and team.
Yeah, for sure. Uh and then we also have the Laravel podcast hosted by Matt Stoer. So, really great resource to take a look and see what's going on on the at the Laravel team. He's having a podcast with every single person getting to know them. So, please check them out at laravelpodcast.com. Lar jobs is another great resource if you're looking to hire, you're looking to post a job, um, and for all your Laravel job needs, you can check them out at larajob.com and you can find more details in the description below for links and stuff.
Larcast is another great way to build your Laravel skills. So big thanks to Jeffrey Way for building such an amazing resource for the community and please check them out at larcast.com. Another great resource is community.l.com where you can find all the different events that are happening all over the world when it comes to Laravel. So you can go check them out, stay connected, and you could also add your own events that you're hosting that's Laravel related and you can talk to Laravel team and register your events on the Laravel website. Laravel stories is an also great way to take a look at what's going on in the community.
You can answer Taylor's questions by going to laravel.com/stories. Take a look at what's going on artisan of the day and share your story with the community. We also want to say a big thanks to Vehicle for their support in hosting this meetup. They have a great team of developers that specialize in team augmentation. So if you have a Laravel problem, they'd be happy to help you out and be an extension of your team. So make sure to hit them up at vehicle.com or email them at govvehicle.com. We also have a giveaway. So big thank you to Jet Brains for sponsoring a couple of one-year subscriptions to any of their idees.
Uh and if you scan that QR code, you can enter our draw and the winner will be announced June 10th and you'll uh know if you're the winner. All right, I'll pass it off to Dan to introduce our speaker for this month. Thanks Marggo. Our speaker this month is uh Joe Tannenbomb. Joe is the open source lead engineer at Laravel. Um he's also a frequent presenter. You may have uh present seen him present at any number of occasions including most recently at Laravel Live Japan. Uh and Joe's going to join us today uh to talk about the Laravel Cloud CLI and all it has to offer.
So without further ado, here he is. How are you today, Joe? I'm doing well. fighting the jet lag just like Marggo. Well, we're do we're here. We're doing it. But if I just fall asleep mid-sentence, I I'll be up in 30 seconds. Don't worry about it. I'll just, you know, we'll pop in and wake you up. Not a problem. All right. Cool. So, yeah, you said I think uh you're all set to go here. This is going to be a very uh you know, live and interactive session here. Kind of show us uh show us around the the uh the cloud CLI.
So, uh I think I think we're good to go. So, if you want to go ahead and share your screen there, Joe, and Okay. We'll hand off control to you, Marggo. And I want to step step backstage and uh we'll uh the stage is yours. All right. Can we see my screen? Can see your screen. Okay. I think that the the size is good. Uh just checking checking the chat. See if there's any comments. Size good chat. Uh we'll we'll let you know if not, but I think we're good to go. If not, all right, we'll step backstage.
It's all yours, Joe. All right. So, we're going slideless today. Zero slides. We're just going to do a lot of terminal commands and you're going to see how to interact with Laravel cloud from the CLI. So, first things first, why would you even want a CLI for Laravel cloud? Uh, this reduces context switching. So, you can do just about everything you can do in the cloud dashboard from your terminal, which is pretty great. Also, it's good for agents. Agents can interact with the CLI directly and issue commands, check deployment statuses, um, do anything you would do with the CLI itself.
So, uh, it just keeps you in the flow of development. It keeps you in the flow of, uh, shipping. So, it's just a nice unified process. You can always hop into the dashboard if you want to, and you can even do that from the terminal. We're going to show you that. But, uh, to get started, let's actually install the CLI. I've removed it from my computer. And, uh, we're going to actually go ahead and install it. Composer global require Laravel cloud CLI. Okay, that's all it is. It's a global composer package. Okay. So now we should have should have it here.
Which cloud? There it is. Okay. So the first thing we're going to do is log in. So we're going to do cloud off and it's going to open a browser and you're just going to check off the uh the ones that you the organizations that you belong to. Okay. So in this case I'm going to check off cloud CLI cloud demo and Joe Tanimom just to just to have a variety. Here we authorize. Should pick it up automatically and we should be good to go. Right. So now we're authorized. So now uh it says authentication successful and the tokens are saved to and it shows you the path so that if you ever want to dip in there and edit it manually or take a look at the tokens, you can look at it yourself.
So the next thing I would do is I would set up completions. So uh you can set up tab completions for the commands. It makes it a lot easier. And to do that, you just say cloud completions. Okay? And it'll ask you uh what sort of shell you're using. And then I've already actually installed them. So I'm not going to overwrite this. But this is where it would actually head to. And then once you have that, you can do stuff like cloud and then hit tab and it'll automatically pick up the commands that you that are available to run.
So it comes with some nice autocomp completions um off of that which is nice. Uh the next thing I would do is if you are using this with agents, I would install our skills. So we have dedicated skills for deploying to cloud using the terminal and it really helps sort of bridge the gap between the agent and the types of commands it should run when you want to do certain things. So we've made that really easy. It's just part of the um part of the CLI cloud uh skills add. Nope, that's not what it was.
Skills install. Sorry, install. And so it asks you which agents you want to install for. This is fine for now. Um, my skills are already installed, but you could always uh overwrite them if you wanted to. And it writes them to the correct directories on your screen so that your agents can pick them up. So this way uh when you ask your agents to do things in natural language, it knows, okay, they mention cloud, I should use the deploying Laravel cloud skill and pick up any commands related to what they're actually asking. And we have specific guidance for specific scenarios in order to guide the agent a little bit better.
So now we're all set up. We're in this directory. What is this directory? Let's do composer dev and see what this app even is. So we're spinning up some stuff here. Excuse me. Including um we should be doing a reverb server. Should be coming up. I hope you did. You already start. Where are you? Okay, we're work. We have a Q worker. Oh, reverb is already starting. It's right here. Okay, let's pick this up. Very easy. Make it rain. This dispatches 10 jobs out. And then via websockets, it actually just makes it rain little emojis.
So that's 10 jobs. And if we actually duplicate this window is a very important app. It's very important that this app exists. Uh if you do this, it'll actually synchronize it over the websocket so that it should rain at the same time in both windows in the same exact way. Okay, so if we do this, there's 10. If we do this 100, and this is going to take a second because we only have one thread running on our local, but it's basically dispatching all the jobs. And then once it's dispatched and they start processing, you can see it's loading here.
It should start raining 100 emojis very shortly. There we go. Great. This is the app we're working on. This is the app we're going to be deploying today. And uh if you notice um this particular app, oh, it's still doing it. Okay, that's okay. Uh this isn't even a git repo. This is nothing. This is just like a starter kit that I've modified locally, right? So, let's just run cloud ship and see what happens. Okay, it immediately says, hey, this isn't a git repository. Do you want to make one? We want to make this as easy as possible to go, I have some code on my machine.
I want to get this to the cloud. We want to make this as as quick and as ergonomic as possible. So, we are working under the assumption that potentially you're not even in a git repo and we can set that up if you have GH installed on your computer, which is uh the GitHub command line tool. It's not a Git repository. Yes, I'd like to create one. I'm going use this one. I'm going to say uh demo. This is going to be a private repository. I would like to add, commit, and push my files. So, it's really walking me through like how do we get this up to the cloud.
Okay, so here we are. Great. From here on out, it's now making very educated guesses about what you're going to need on cloud and what things should be named. So, it's pulling this from the repository name. It's assuming that the application name and the repository name are probably the same thing. So, hopefully we can just keep pressing enter. Most of my applications are in this region. So, it pulled the most frequent region from here and auto selected it. So, it's it's in US East Ohio. We're creating the application right now. Great. Uh, it noticed that I had some ENV variables in my local ENV that are not usually in an ENV um in a standard Laravel application.
So, it said, "Hey, do you want to add any of these to your cloud environment?" I'm going to say yes. I actually need both of these. Very important stuff. What do you want to enable here? Now, this just looks like a generic list, but it's actually not. It detected that I had inertia in the application. So, it's offering inertia SSR. It won't offer that if your application doesn't actually use inertia. And it noticed that I had echo installed and reverb. And so, it said, "Oh, you probably are going to need websockets." So, um, it actually picked that up for us.
These three things are basically generic things. And then we have a bunch of other things that we're auto detecting locally and offering up to you if you need them. So we're going to just check off all of this stuff. Press enter. We're going to hibernate after five minutes. Uh we are going to use the CLI testing database cluster and we are going to create a new database for this. Uh I'm going to use an existing websocket cluster just for ease of use. Uh and we can just use the main one. That's fine. Okay. So this is all set up and it's good to go in cloud.
This exists in cloud right now. Do we want to deploy? So it's immediately saying like it's set up. It's not deployed. Do you want to do that that deploy right now? I do. So all I'm doing for the most part is pressing enter. And that's the point. Like we're trying to supply as many educated guesses along the way to just have you keep pressing enter. It should be very simple to to get this up to cloud. Um do you want to edit the build commands? Yeah, probably I do. So let's check that out. So this is the standard build command.
Uh it picked up that my application uses PNPM, so it automatically filled that in for me. So we're going to say, yep, that's fine. And then we actually do want to migrate this. We're going to uncomment this. And we're going to submit. And now we are deploying. Okay. So this is going to take about two minutes probablyish depending on how fast this is going to run. Um, so we have our application in the cloud. We've set up the environment. We've set up websocket clusters and a database. This has all been set up for us by the CLI, right?
It's done a lot of orchestration in the background to set our app up for success. Uh, so we're deploying it now. Uh, we're going to do one more thing after the deploy to further set us up for success. Um, that isn't quite part of ship yet, but might be part of ship in the future. So, we're going to uh do something shortly. So, let's see. You get live updates of the build status here in the terminal, which is nice. So, you can see what's actually happening. You can see how long it's taking. So, the next thing I'll talk about the next thing while we're doing this, the next thing we're going to set up is manage cues.
And we just set we just launched managed cues not that long ago on cloud. And managed cues are great because um they respond to Q pressure. So if you've got a burst of jobs coming onto the queue, they'll uh they'll they'll span out to all of these workers depending on like what you've configured. So you can do between like zero and 25 workers depending on your plan and uh it'll fan out the jobs to disperse and make sure that um the jobs move through at a reasonable pace. Right? So it's responding to that Q pressure and it's working in isolation.
It's not taking any resources away from your application server. It's actually uh just using a dedicated Q worker to actually work through these jobs. So, our deployment is now running. We're going to set up that managed uh Q instance right from the CLI once the deploy is done. Deployment running. Let's go. These are the worst parts of cloud demos because even though it's only two minutes, it feels like forever. But we're we should be done any moment now. Let's see. You got this, buddy. I'm ready to press enter on the next thing. Deployment succeeded. Do you want to open the site in browser?
I sure do. Let's see if it's good to go. So it's waiting for the DNS to be completely resolved. And there it is. This is our site on cloud. Okay. So we have our site deployed. Uh the next thing we're going to do is we're going to set up that uh that manage Q situation. Okay. So we're going to say matcloud manage. And this is where auto completion comes in really handy. Uh and we're going to say create. Okay. So our application is uh that's the correct application. and it auto picked it up from our repository, right?
Um, it picked up our environment. So, again, like you don't have to select all these things. It knew where it was in cloud and it just picked it up. The Q name is default. Do 256. We're going to put this up to, let's say, 20 workers. Uh, the visibility timeout is going to be 60. We're going to pull every 5 seconds to check for pressure and scaling decisions. Um, and then 90 seconds will be after they finish their current job before terminating. Uh, back off zero tries one. That's fine. Time out 60. Oh, it's already news for another minute Q.
Okay, let's check something out. Cloud dash. So, you can access your dashboard immediately right from here. Let me make sure. Oh, I know what I did here. Yep. Trash cloud. Okay. So, this was something I was going to demo and I was like, how did it pick it up so fast? So, when you actually do this, let me go back here. I want to actually show you something. So, cloud manage create. It's it's asking me to pick an org, right? So, it's asking me to pick this or it's doing that because it doesn't know which org it belongs to yet.
So I'm going to pick Jotanabomb and then it can pick up the correct uh the correct repo from the uh sorry the correct repo in cloud from the local repo. Right now I want to avoid this. I don't want to pick this or every single time. So what we're going to do is we're going to say cloud repo config and I had this cache from a previous run of this demo. And you can basically say uh pick the org that this is associated with. confirm the app that this is associated with. And then if you do here cloud and we say vim cloud config, it's going to specify the organization ID and the application ID of your uh cloud app, right?
So then it'll stop asking you every single time. This travels with the repo that's universal across all of your users on your team. Those IDs are universal. So now if I run this again, it has automatically picked it up from the repo config, right? So you can commit that, push that up and it can travel with your repo and now everybody is locked in to the correct um organization and the correct application. Okay? And the environment is picked up from the branch that you are currently on in your local machine. Okay. So now we're going to create this 256 20 workers 6590 160.
Okay, it's created. Now let's redeploy. So we can do cloud deploy because we have to deploy our infrastructure after changes. And there you go. So while this deploys, we can show you a couple more things. If you ever need to hop into the dashboard directly to your application in the dashboard, if you want to just like eject out, you can do cloud dashboard and you can even do a partial. I didn't even type the D because I don't know if you know this, but Artisan commands operate. You can do a partial match. So you could just do cloud dash and it would actually work fine as long as nothing else actually like had dash in the prefix.
Um, so this hops you right into your dashboard in the correct organization in the correct application. Okay. You can also do cloud browser and it'll hop pop open your site right there in from the terminal. So, we've tried to put in a lot of little nicities in here just to make sure that it's very smooth. If you want to eject out of the terminal or um basically do anything else, we really really want to make that a smooth experience. So, our build is running. Okay. Let me make sure I didn't miss anything while we're doing this.
Okay, cool. So, our build is running. Uh, if we actually popped into the dashboard here, should be able to see the build running on the dashboard as well. Deployments build. Yep. So, we're up to the deployment part. And this should be synced up here. Deployment running. Yep. So, it's all in sync. We're trying to like keep everything in sync between the two sides. We should be coming up on full deployment and then we'll do some testing and make sure this works in production. This is the one part. The one part is the deploy. But it's only 2 minutes.
2 minutes is pretty good. I would sing a song, but nobody wants me to do that. I promise you. All right. Is it going to be 210 like the last one? Nope. There we go. Great. Let's do cloud brow. Let's pop it open. Let's see if it works. Let's do 10. Okay, we've got a loading indicator. We've got 10. Now, this works a lot faster because we're using those managed cues, right? So, it's dispatching jobs and then it's going to move a lot faster than it would locally. So, 100 should come in pretty Yeah. So, it's like comes in pretty much immediately and it's processing those cues at a clip.
Um, yeah. So, this is good. Let's make sure that it's actually working over websockets. Yep. Yep. Yep. Yep. Yep. Processing jobs. Doing it. Let's just do another tenor just to make sure it's working across the two. Perfect. So, it's all in sync. It's all working. So, the websockets are working over the cloud uh websocket cluster. It's working with manage cues. It's working with the database. It's saving every time we click this. It's saving these records to the database. Now, how do I know that? Well, we can actually check the database. We can pop in here.
Let's clear this and do cloud tinker. And you can actually tinker in your actual repository up there. So you can say app models rainrop count and we need toup and then we need to submit and this is actually going up to the um the cloud application and pulling this stuff in. So if we actually said echo app models raindrop first and we actually do something like a JSON encode. This is great. Output's a little broken. Should should have fixed that. But um this is great. So we can we can tinker directly in. For me though, this experience is a little funny.
I don't like doing it quite this way. So I am actually going to pull up my editor and it's going to do the same thing, but I can edit in my editor instead. So instead, I can say uh let me just copy what I had here. Okay, you can do this. And then we can actually just say um JSON pretty pretty print. Okay. And if I save it, great. It recognizes when the editor was saved and it and it spits back the result to me. So if I come back here and I just do, you know, count again, save it, and you get that nice little back and forth action.
This isn't Tinker in the sense that it doesn't know what the previous thing was. These are individual things, right? So if you set a variable in here for some reason and then you want to use that variable later on, these are self-contained little scripts that are running in Tinker. So it's not the Tinker you quite know and love locally, but it allows you to sort of like poke at your environment in your database or whatever it is that you want to do um there. So I could even say like, you know, truncate and run this on it if I wanted to.
And then I could re ree recount re-echo that count and it should be now zero. Great. Yeah. And then as soon as I close it, it knows that I've closed it and it closes the tinker session. So cloud tinker super useful. Um that editor flag basically comes from an environment variable. Um but you can also specify like if you wanted to cursor uh I can't even see this because of the thing here. uh if you wanted to specify a specific editor, you can specify it uh by providing a value to that. Otherwise, it'll try to find the default editor on your system.
Okay, next up, let's talk about running commands on your cloud application. So, we can do cloud command run. Great, we're picking things up. Okay, it's going to allow you to run whatever artisan command that you want here. Now the cool thing is um it picks up the artisan commands from your local repo, right? So it's reading out what are the commands available in this application based on the directory I'm in and it'll autocomplete. So I have I have one called rain and it actually autocompletes it. So if I say rain, it should actually Was that rain?
Did it happen that fast? Maybe it did. Cloud command run. Let's just move this a little bit. Oh, rain. And we'll do 100. Yep. So, I can make it rain from the command line by running that. Now, let's actually make some of those fail. And actually, let's um instead of doing it this way, let's do history. And it'll pull up the history of commands from that you've run. So, these are the two commands I've run here. They just unique them together. Let's grab this one, and we'll edit it before we get there. So, let's put a 50% failure rate on that.
So, we're going to we're going to issue 100 raindrops, but we're going to put a 50% failure rate on it. So, 50% of them have a likelihood of failing, or there's a 50% chance that any one of them will fail, I should say. So, we're going to run this. We should see some rain, but we should see less rain. It's actually quite a lot of rain. I wonder if they failed. Let's see. Well, we can actually check it out. So, um, manage cues also has an alias that's just cues just because it's a little shorter to write.
Um, so we can do Q's. Um, uh, failed jobs. I knew that was going to happen. Let's get back to this. Okay. Q's failed jobs. Okay, I'm zoomed in and I'm small. It wasn't going to go well. Dang it. Okay, let's try it one more time. Oh man, tables. Tables are hard. Okay, so these are our failed jobs, right? So you get um the ID, the name of failed job, uh which queue it ran on and a little snippet of the exception and what time it failed at. So we have a couple pages of these failed jobs and we can actually jump into the detail here and we can see what actually happens.
We get the full we get the full uh thing here. We get the full exception and everything. So let's actually uh go ahead and hit R and we'll retry a failed job and see how it goes. Let's see. We'll retry this one. should retry. And it might work, it might not. It depends on the failure rate. Okay, looks like it's not working. Let's try it again because it hit the lottery. It hit the failed lottery within the job. Let's try this one. Can we get one to happen? There it is. Okay. So, you can retry or delete failed jobs right from that list.
You can also go ahead and say um failed jobs retry. That's not it. Manage Q. Retry failed job. And it'll list out your failed jobs. And you can actually check as many off as you want. Press enter. Let's see. Okay, we got some coming through. So, you can do all of this right from the command line. uh makes it super super easy uh to manage your queue directly from the command line. Um okay, one thing I want to do which um I'm very happy is in here because I hate doing this stuff manually is you can actually set um enviables right from here in your environment.
So if we said cloud env bars uh do you want to append? So you just like append blindly. Don't worry about duplicates. Just go ahead and make sure that this is the um the value. Do you want to set which checks for duplicates and updates existing variables or do you want to replace which means like you are fully replacing your env file which um I don't know how often you want to do this one but it is available to you if you wanted to. I'm going to just append and say uh you know cool new key and cool new value.
Don't steal my key. Uh, no. I'm all done. Okay, let's see if it came in there. Hit cloud dash. Should open the dashboard and let's go to settings. And if we come down to here, cool, new key, cool, new value. Okay, so we just we just pulled that in directly from the command line. And I'm going to do this because it's going to really annoy me if I don't. Okay. Um, so you can manipulate your ENV file right from the command line, which is super cool. Now, when we did that ship, it automatically did that based on like differences in your ENV file, right?
So, it picked up like some variables that weren't necessarily usually in there, and it offered to shoot those up to cloud for you. So, um, but if you ever need to add one, you can just do it right from your command line. Okay. Uh, one thing that people have asked about and we've we've added in is cloud usage. So, you can actually check your usage right from the command line and it should show you. This is a test account. I'm not really sure what it's going to show me. Okay, so it shows you the period.
It shows you what your spend is. It shows you uh your applications, how much your resources, add-ons, u how much bandwidth I've used, and when this was last updated. Right? So, if you want to just do a quick spot check at this, um, that's how you would check usage on the command line. Um, I'm going to now try to do something with Claude and see if it, um, if it uses if it first picks up the skill and second, um, uses it correctly to actually do something with the command line. So, uh, let's just say, um, how did my I'm going to be real casual with this.
How did my last cloud deploy go? Now it should come up and it should pull up. Okay, so it pulled up the deploying Laro cloud skill and hopefully it pulls up the status of my last cloud deploy. This is looking good. I do like this. This feels good. Yep, there we go. So this first commit tells us some information about it. Good to go. Uh let's actually go ahead and deploy now. This is all non-deterministic, so we'll see if this works. Okay. Oh, yep. Oh, it went very specific with it. That's okay. So, you so we actually pick this up automatically if you just said cloud deploy and you're in the correct directory like you saw before.
But it's actually you can also explicitly uh provide the app name and the environment name if you want to get very specific about what you want to deploy. So you could deploy something that wasn't even in the directory you're related to and um it it would work just fine. So it's actually it seems to be working. It's building. It's running. Let's actually see if it's deploying. It should be. Yep. So you can interact with this stuff uh with your agents which is really cool. And it works especially well if you're going to do this. I would really recommend adding the skills doing that skills install because it it makes a huge difference.
You can get the agent to do what you want, but the skills install really really really helps there. Um, let me just make sure I hit everything I wanted to hit here. Q retry deploy ship. That's mostly everything. Let me just make sure that I just Okay, so this is everything you have available to you. Let me zoom out a little bit so it's in the right place. Excuse me. Um, the ones you're going to use the most are the ones that I showed you here today. So like stuff like ship, deploy, dashboard, these are ones that I use all the time.
Browser I use all the time. Completions um and uh skills install are like I think essentials to have out the gate. I think those are very very useful. Um I don't often these this is like granular. So like basically there's a onetoone correlation between what's available in in the API and what you can do with the um the CLI. I would lean harder into the orchestration type commands, right? So I would lean more into uh stuff like ship, stuff like deploy because it has it's a little bit smarter. But if you want to get granular, you really can.
So like if you wanted to say like create a background process um you can do that yourself automatically. So um let's go with uh the app instance. It's a worker uh I don't want to edit the worker defaults and it just created a background process for me. So let's see should right so created a background process for me with the defaults. So you can do that. You can basically treat it as a version of the API in the terminal, but um I tend to lean on the the orchestration commands more. Um this might be something that people are interested in, which is the cloud cloud IP addresses, and it lists out the IP addresses for every region.
Um, right. So, you can go through and grab the region and then if you press enter, so let's say I need like the IPs for for this. Uh, it'll ask you which version of the IP you want to copy and then that just goes directly onto your clipboard, right? So, now I have that on my clipboard. It gets makes it really easy to just grab that stuff uh if you need it for something like firewalls or networking or anything like that. Super super useful um super useful command. Just want to make sure I didn't miss anything.
That would be You can pause, purge, resume your cues. So, let's see. Uh, if we purge, let's actually try that out. So, we're actually going to do Let's actually do cloud browser. Open this bad boy up. Do this so it doesn't get too tight. So, we're going to issue I'm actually going to cue this up. Cloud Cloud Q purge. We're going to pause. Great. So, we're going to wait for confirmation. Let's see if this works. I'm going to do a TH00and. It should start going and then I'm going to purge it, which should stop it shortly.
This is still processing jobs in flight, but I think it's going to stop it. I keep thinking it's going to stop and then it's not. Whoa, it did not stop it. It just went hard. Interesting. Okay, might be a mismatch there. Well, lab demos, that's what happens. Um, okay, let's just check one more time for anything I might have missed. Create, environment update, domain create, deploy monitor. Oh, if you did, uh, that's actually an interesting one. I use this one sometimes actually because if I did this deployments, let's say I push something, right? It deploys every time that you push a change.
But sometimes you don't want to like leave the context of what you're doing in order to know if it's done deploying. So you can actually let's just pretend we push something and it's deploying. Great. Now we do cloud deploy monitor and it'll look for anything active and pull it up and see it's saying first commit we're in the build. So you can actually deploy things that you didn't manually deploy from here and just say like hey monitor monitor any deploys coming through and I think at the end it'll even ding me at the end when it's done.
So we're actually going to like move on here do one last check. Yeah. Anything you can do in the API, you can do from here. Um, and uh, it makes it a really powerful process to do from the command line. Basically, um, that's largely an overview of the cloud CLI. So, we're trying to reduce the context switching. We're trying to make it easy for agents to interact with um, your cloud environment from the terminal. Uh, we're just trying to make it convenient. So, it's also open source, so you can go ahead and contribute to it.
You can file an issue if you're having if you're having a problem. You can add to it if you think there's something interesting that we're missing, an opportunity that we could we could use. So, we welcome your submissions. Let us know. Um, the API is also out there. All the API docs are public and out there. So, I hope you enjoyed and uh thank you so much for having me. Thank you very much, Joe. Okay, that was uh yeah, little bit of waiting there for the uh for the robots. I know it's it's un every time I do this, I can't figure out how to fill in a full 2 minutes with every deploy that I have to do.
We we actually we had some some questions queued up. We thought about maybe popping with, but it it wasn't it wasn't bad at all. Or no, even I was saying during during that little pause there, but um yeah, there's definitely some questions in the chat. We're going to get to those. I I had one just to start just uh uh not necessarily related to the API itself, but uh it's it it looks so beautiful the uh the the the UI of the of the CLI. Uh what's what's powering that and all like the animations of the we must ship and all of that stuff.
What's what's under the hood? What's under the hood there? That looks awesome. Uh it is it is Joe powered. I I put a lot of I put a lot of care into So um the core of it is prompts, right? So like prompts is still what's under the hood. I reskinned it a little bit. I have like sort of that timeline sort of feel on the lefth hand side where it's a line that's like checking checking things off as they're successful. Um, so I don't know if people know this, but you can actually apply themes to Laravel prompts and you can style them however you want.
So you just like basically need to provide a renderer for every prompt that you want to re reskin and then you register a theme. And I mean it's not trivial. It's not like the easiest thing to do, but it is totally doable. Um, it's sort of one of those things that was like, we might do this in the future, so we'll just leave it undocumented, but you know, it's in there. So, I decided to reskin it. And I wanted for certain orchestration level commands, I wanted a little bit of little bit of pizzazz up front.
So, I made some animated things for it. A lot of people in the chat were really uh really appreciating it. So, Oh, great. Good. So, let's Yeah, let's start going. finding a question, Joe. Um, so Dan Joe, so are you finding yourself completely in the terminal now and not like going to the like switching applications like how how much are you in the terminal dayto day? Uh, in general, yeah, I guess with the with cloud CLI now, I guess like having Oh, cloud CLI, I try to as best as I can do every single thing with cloud from the terminal.
um both as both because I find it really convenient and also um I'm just aggressively dog fooding it so that like you know if anything comes up I can I can spot it faster than than the average bear. But yeah, I really I'm I don't go to the dashboard much anymore. That's awesome. Um just a quick followup for that. I don't know D if you have another question yet, but um for someone that wants to get more into it that maybe is more used to the dashboard or comfortable with it, what would be like your what would be a good like drawing point to get them to use the CLI more or something that's like low I guess on like effort I guess I would say uh pick one thing that you're often doing in the dashboard like just pick one.
So if you're often running commands in the dashboard, I would invite you to do that from the CLI. And this is if you're already using the CLI. Not everybody is a CLI person, which is totally fine. But if you're in the terminal at all, and at some level we are because we run composer dev or, you know, pnpm run build or whatever we're doing. Uh I would invite you to do that thing using the cloud CLI. And I think uh what what is the the men's warehouse? I think you're going to like the way you look.
I think that's the uh I think you're going to like the way it feels, you know. Um yeah, I wouldn't go necessarily all in with it right away, but I would say like pick the one thing you're doing the most and see if it's more comfortable or ergonomic to do from the CLI. And if it's not, let me know why. What struck me too when you were showing that a couple of the things that you could do there was like uh going back to like the the launch of cloud and I think uh for some people that are you know used to uh a server where they have a little more control us you know managed environment like you know using Laravel forge let's say one of the questions I know when we when cloud first launched we had Joe Dixon on one questions was from people was sort of like can I SSH to the server right and I think if I think about like why why are people doing that and I think about when I do that most often I'm running a one-off artisan command or I'm up to an environment variable from the CLI and you kind of showed how you can do both of those things, right?
So it kind of like takes takes that away and kind of leaves it very comfortable just a slightly different way of accomplishing the same thing, right? So exactly. Yeah, we're we're trying to make it easy to do those things that you would SSH SH SHM4 anyway um just through the dashboard interface or through the CLI. We're really really trying to make that trivial to deal with. Yeah. Awesome. All right. So from the chat, we got one here about skills. There was a a question about I don't know if you can speak to this. Is the skill are the skills also part of Laravel boost?
Uh those skills are not part of Laravel boost. They are a separate thing called agent skills. And we have some great skills. So we have like Laravel best practices. We have a nightw watch skill. We have a cloud skill that we that we just saw. Uh I would greatly uh endorse the skills. I think they really help especially stuff like the Laravel best practices skill um crafted by Taylor is is really one to pull in to your agents and I believe that lives under uh the GitHub repo agents uh sorry Laravel agent-skills I believe is the is the repo with instructions on how to install those.
Cool. All right. Um and there was a another question too that someone was asking maybe if I can get your help putting on the screen but uh someone was asking how to use completions. So I guess kind of like understanding like does the CLI support like shell autocomp completions out of the box or how how does that work that whole list? So it it works uh so you do cloud completions which will install the completions for you. Um, so what that does is it basically uh creates uh just like most shell completions, it queries the CLI itself behind the scenes like hey what commands do you have and then and then when you press tab it auto uh fills in the command that you're closest to already typing.
So yeah, you can do uh cloud completions and it should offer to auto install the one for your system for you. Yeah, we'll probably like discover other things you didn't know by just tabbing it. So that's awesome. Uh there was a question here related to um Oh, how am I get that? There we go. Um sorry, somebody's at my door if you're hearing a doorbell right now. Sorry. Uh and yeah, in terms of what the CLI can do, uh and then hibernation, uh are you able to through the CLI determine if an environment is awake or not or or hibernating?
Oh, that's a good question. Um, off the top of my head, I'm not sure, but I'm I would imagine uh let me just see. I think probably yes. Environment uh gets Oh, status running. Environment get environment colon get will show you the status of uh your your environment at the moment. So whether it's hibernating or running. There you go. Perfect. All right. Uh I'm glad I was able to pull that off. I was like it's got to be environment G, right? Uh yeah. Uh partner. Yeah, there's this one kind of tangential question, but and again I don't know if you can speak to it.
Any chance you know if Laravel cloud has any partnership programs for communities or maybe we were to point this person if they were had a question about that? Uh what does that mean exactly? Partnership program for communities. Yeah, I'm I don't know if it'd be like a like a a local dev meetup or something like that or you know a certain dev community within within a community or something like that, but uh is there I would say uh I can you know uh if you can send me this person's handle afterward I can have somebody reach out to them because I'm not sure who that is but maybe maybe somebody on the cloud team would know.
Yeah, for sure. I know they do have the community page on the the Larl website too. So if there's some Lar that but yeah um we'll pass that on. Great question to ask. I had a question about like there was one spot you were you were showing the going through and setting up a manage queue and there's a number of different and there's a lot I think most of the things had a default where I just keep hitting enter right for the defaults. Right. Right. Um is there a way like I'm thinking about this from like agents driving the process standpoint.
Is there a way I can save not necessarily at a project level but sort of my my default defaults if you will so that hey if if I tell the agent you know go ahead and set up this manage Q that it's going to know what what defaults I prefer. Do you know what I'm trying to say? Yeah. So you can uh there are not defaults in that sense but if you uh every every single command is meant to be also run non-interactively. So you can every every one of those questions I'm answering on everything, you can pass flags for all that stuff.
So if you said to the agent like, you know, uh, spin me up a managed queue with 20 workers and a 60-second, you know, back off or whatever, it it can pass flags for all that stuff to like actually spin that up for you automatically. Yeah. Oh, perfect. Yeah. All right. Uh, yeah. Connected to to LLMs and agents. Uh, this comment says, "Giving your LLM access makes me a little curious." Yeah, that's the only one. Can you sign him with limited access or Yeah. Is there any any security uh things you can put in place to help limit control?
Yeah. So, um I don't know how how granular you can get with the tokens right now. The token is like at the organization level you can you kind of can go. I'm not um so I'm not actually on the cloud team. I'm the I'm on the I'm on the open source team. So, I don't know as much about the cloud specific stuff as a cloud team member would know, but um we just developed the CLI in conjunction with the with them developing the API. Um so, I hate to say this again, but I'm not totally sure, but I'm happy to ask uh a member of the team to see if there's a way we can tighten up the token access.
I'm not sure what the plans for that are. Okay. No, very very valid question. Very, very much on people's minds. Yeah, the security. Yeah. Yeah, of course. Totally understandable. Uh, we have a fun question here, John. I'm not sure it's wallpaper, but someone says, "I can Where can I get that wallpaper?" I think they're maybe talking about the nice artwork behind you perhaps, but uh, what is my wallpaper right now? Oh, sorry. Maybe that's the computer wallpaper. I think I probably misread that. Yeah, I think you're right. One of the two. Oh, is it or is it this?
This is a painting. But yeah, that's that's what I was going to say. I think it's a painting. Um, if it's the computer wallpaper, it's uh Raycast has a bunch of beautiful wallpapers. If you search for Raycast wallpaper, uh they are they are like amazing with wallpapers. Um, so I would definitely recommend the really beautiful stuff over there. Here we have a uh a Windows specific question. There's some functionality that's not available in Windows. Can't confirm if that's true or not. Uh, are you guys planning on working on that? Should I just use WSL? Uh, my short answer is, yeah, sorry.
You should probably just use WSL, but um the the Windows stuff should be Well, I'm curious what your experience is. We we often fall back to static. So, like uh stuff like the spinner, stuff like um you know, like the loading spinner or some of the more interactive elements will sometimes fall back to more static versions of them, but they should still work. They just may not work in quite the same way. So, I'm curious what your experience is there and would love to know if we can improve that in some way. But I, you know, the best experience you're going to have on Windows is WSL and I'm I'm sorry, but I'm also not Microsoft, so I don't know.
Only so much you can do there. Yeah. Uh any uh any other questions on your side, Margot, that you saw? Yeah. I mean, this is a more like relatively newer tool, so I feel like there's still lots more that's uh left to build. Uh, and being open source, people in the community can build stuff like that. Like that last question that just was asked. So, um, I'm sure um, like I guess are you planning on having everything being in the terminal and then getting away from the dashboard? Will there always be the dashboard and like the CLI that always exists?
Um, I guess are there any future plans for that or like how much more of a push it is to kind of get everything in the CLI? The dashboard will always exist. Um I I think somebody would uh a little little dot on my head would appear if I decided to dashboard. Um no, dashboard will always exist. Um the CLI is meant to augment that or or replace it if you really wanted to. Um so it's meant to be a convenience for like I said like reducing that context switching, staying in the world that you're in, uh dashing off quick things to your environment like a a one-off artisan commander, a quick tinkerer.
Um, dashboard will always exist. CLI will uh remain parody with API. So, anything you should you can do in the API, you should also be able to do in the CLI. We're always in sync about that. So, uh whenever like we just launched manage cues, it just hit the API and while I was in Japan, I like whipped up the the CLI for it. So, you know, um we're we're pretty aggressive about keeping those two things in sync. And I want them I want everything that's functionally available in the API to be in the CLI as well.
So, um yeah, we're not getting rid of the dashboard. Dashboard is not going anywhere. That is the case right now that the CLI can basically do what's available in the API. Yeah, that's great. I It should be one to one. If we're missing anything, please give me a shout. I would love to fill in those gaps. Cool. So yeah, very much looking forward to what the next six months, next year, all that stuff looks like. Sounds like a really great helpful tool for the Yeah, I think also we're just continually refining like um like a couple weeks ago I was running command run over and over again and I was like, man, I would love autocomp completion from my local commands.
I would love to to run it from history and edit it afterwards. So like those two things came out of like my personal like paper cut pain points of saying like this could be better. So like me forcibly dog fooding this over and over again means that like um I mean you're going to get a lot of like my opinions. This is a very Joe opinionated CLI. But um I I like things to work very smoothly and like ideally you're just pressing enter on things and you're not having to like really like do a lot of adjustments and typing.
So it'll keep getting better. We're going to keep improving it. It's very active. Oh, that's awesome. I mean solve your problems first. Share with the community. keeps uh keeps keeps the good thing going around. So that's awesome. Yeah, exactly. So yeah, just just a high level generic question. Is there anything like big on the horizon that you that you're looking at or actively under development or uh in terms of a feature set or uh for cloud CLI? Yeah, for cloud CLI. Yeah. or what what's on the horizon for cloud CLI? if there is anything at the at the moment other than keep I have my my personal I mean you saw that the table uh the table got funky like twice while I was doing it because it's not responsive yet.
Um we have now a data table prompts actual data table that we could we could pull in. I'm using a handrolled one from from this one. So like there's some stuff we're going to swap out to make it even more uh responsive and a little more like error tolerance so that you don't run into like weird rendering issues like that. Um th that's just tightening the bolts right now. It's in a really good place. So we're really doing a lot of like bolts tightening, but um yeah, keep anytime cloud launches something, keep an eye on the CLI for it being available there as well.
That's the goal. Awesome. Awesome. Yeah, I I had to write it down because it was uh one of the best lines I've heard in a presentation, but I can make it rain from the command line, I think. Did I say that? I can make it rain from the command line. I almost wrote in the comments. I had to write that down. That's Print up the merch. Let's do it. Let's make it happen. Awesome. Well, uh, anything else from uh, from you, Margot, before we let go Joe go? No, that that was absolutely awesome. So, really great to have you, Joe.
Thanks so much for joining us and showing us more about this awesome tool. That was awesome. Thank you for having me. This was such a delight. Uh, thank you. Longtime watcher, first time presenter. Thanks, Joe. Have a great day. We'll talk to you soon. Thank you. All right. And we just uh as we always do, just have a few community things here to to wrap things up, Marggo. So, uh what do we got going on? Cool. Thanks, Dan. So, for um our giveaway, so please scan that QR code if you'd like to join. We're going to announce our winner on June 10th.
Um and sorry if we go back one more slide. Sorry, Dan. Just went straight into that one. Um big again, thanks to Joe. And for details for our next meetup, please stay tuned. We're working things out, but you can join us next month. So, just make sure to follow along with the other accounts that we're just about to mention to stay up to date with what's going on. And um yeah, there we go. So, for uh accounts that you can follow to stay up to date, you can follow us on X at Laravel WW meetup where you can stay up to date with what's going on.
You can contact us if you're also interested in speaking. So, please do so on X and you can also do that on Blue Sky. Uh again, Laravel WW meetup is our Blue Sky, so you can also take a look and see what's going on there. And then of course uh you can sign up uh for all of your email notifications for the meetup by meetup by going to meetup.larevel.com entering your email and kind of taking a look at previous speakers that we've also had. And again, you could also contact us if you are interested in speaking as well.
And of course, thanks for watching on YouTube. Uh if you haven't subscribed to the Laravel official channel, please do so at youtube.com/arlphp. There's a lot of great content on there, a lot of great um speakers, not just the live, but everything else that they got on there. and uh you can stay up to date with what's going on in Laravel That's it. Cool. All right. Anything else from you, Marggo, before we let everyone go? Thanks everyone for catching today's uh or this month's YouTube um Laravel World Live Meetup and we can't wait to have the next one and we'll see you then.
Have a great day everybody. We'll see you in the next one.
More from Laravel
Get daily recaps from
Laravel
AI-powered summaries delivered to your inbox. Save hours every week while staying fully informed.









