WEBVTT

00:00:00.000 --> 00:00:17.475
Alright. So what would you think if I told you that I just said to Cloud Code, hey. Go to my school community and grab me some posts. And keep in mind, school does not have an API, and it was able to use the CLI. It was able to find nine wins, and it made sure that they were in the wins category, and then it gave me the three strongest ones. And I got a link to all of them so we can see if they actually exist.

00:00:17.715 --> 00:00:57.055
As you can see, here is Michael's win. And quick shout out to my community members, Michael, Chris, and Fernando. But anyways, the way that we're doing this is we're using a CLI, and the tool I'm gonna show you guys today actually helped me build the school CLI. So if you've never heard of the term CLI before, don't worry. I'm gonna explain it. I'm gonna compare it to APIs and compare it to MCPs. But before we get into all that, let me show you one more example. So here I said, hey. Can you just go pull 10 of the most recent posts in my community? It goes ahead and it uses the school PP CLI. PP stands for printing press, which is the tool I'm gonna show you guys today. It comes back. It grabs all of these 10 posts. And then I also asked, like, how many tokens did you actually consume to make the CLI request? And it said, okay. Here's what happened. I sent about 260

00:00:57.055 --> 00:01:19.625
to school. It sent me back about a 100 and 32,000 tokens, but what's important is that none of that hit my context window because we were basically able to point all of that routing through the CLI so that none of it actually pollutes your session or your context. So that is super cool, and I built the school CLI, and it literally took me about ten minutes. Alright. So here is the tool that we are using. Introducing printing press, a CLI factory

00:01:19.785 --> 00:02:14.165
and a CLI library. The whole idea is that APIs suck for agents, MCPs also suck for agents, and a lot of times, official CLIs suck for agents because they waste tokens or they're not efficient. So printing press has a library of, like, 50 pre built CLIs that you can use right away, and it also gives you a factory so that you can turn anything into a CLI. So let's just start off with the basics real quick. Why CLIs beat MCPs and APIs, and what even is a CLI? So CLI stands for command line interface, and it's a way to use a tool by typing a command instead of clicking buttons. So it's not a new concept. It's been around for a long time. You know, like, Gemini's got a CLI, Claude CLI, Codec CLI. And you might have been seeing a lot of tools recently create CLIs. Like, Google have their official GWS CLI, which is probably the most used thing in my cloud code. GitHub has a CLI. Playwright has a CLI. Hicksfield just created a CLI. HeyGen just dropped a CLI. It's really just the best and most efficient way to have agents talk to other tools. Now what are the other ways? API,

00:02:14.405 --> 00:02:24.760
MCP. And when MCP came out and it kinda broke the Internet, everyone just assumed that MCPs were the answer, and we're just gonna shove MCPs into all of our agent setups. And they all just have different pros and cons.

00:02:25.240 --> 00:02:36.120
APIs are very raw. You're gonna get back a huge JSON snippet from the API endpoint, and sometimes you need all that information, and it's really, really nice. They're also more token efficient than an MCP server

00:02:36.385 --> 00:02:53.500
because MCP servers have to have all the different tools and descriptions and the ability for the agent to look through everything, which is cool because they're way more flexible than an API endpoint. But as you can see, they add overhead, extra context bloat, you and have to keep a server running. So if you go into cloud code right now, brand new session, and do slash context,

00:02:53.500 --> 00:02:58.620
if you've got a bunch of MCP servers loaded in, you'll see how many tokens they're using every single time.

00:02:58.940 --> 00:03:08.245
And you may not even be invoking that MCP server, so it might just be a waste of tokens. And then we have CLIs, which are local, they're fast, they're composable, they have a SQLite back end, they're agent native.

00:03:08.245 --> 00:03:17.520
And you can start to build some skills around these CLIs just like you can with APIs and MCPs as well to chain them together and make some really cool, fast workflows.

00:03:17.600 --> 00:03:29.275
And the cool thing is the output you get is super short and super clean. So, basically, the CLI response to the agent is super short. And that's what we just saw in that school example where our agent was like, yeah. You know, that took about a 132,000

00:03:29.275 --> 00:03:36.635
tokens. But right here, it said into my clawed context though, I only pulled about 2,000 tokens of summary, not the full a 132,000.

00:03:36.635 --> 00:03:39.195
Okay. So real quick to hit on each of those individually.

00:03:39.275 --> 00:03:40.555
Why do APIs lose?

00:03:40.715 --> 00:04:04.835
Because they were built for code, not for all of these autonomous agents that pay per token. Because when you get back an API response, you just get this massive JSON body. Those of you who came with me all the way from end to end, you know what it used to look like when you would hit a server and get that massive API structure back. You You also might run into issues with pagination or auth, and it just can get a little bit funky sometimes. And what about MCP? MCP solve discovery

00:04:04.835 --> 00:04:14.740
because, like I said, you could quickly glance at 50 tools that are available from a certain server. But because you're loading all 50 tools, now you have tokens and sort of like, you know, descriptions

00:04:14.900 --> 00:04:25.825
for all of those 50 tools. Here's a real benchmark. MCP used 35 times more tokens than the CLI on the same task, and reliability drops from a 100% with the CLI to 72% with MCP

00:04:25.825 --> 00:04:31.505
as tasks get harder. So really, if you can just shift to every single time you want Cloud Code to talk to something,

00:04:31.905 --> 00:04:38.990
just try to find a CLI or build your own CLI now. Because they were built for exactly how agents actually think. They have lazy discovery.

00:04:39.070 --> 00:05:09.570
They have preformatted outputs where you're basically just getting 200 tokens of clean text rather than raw JSON. You can compound commands together. You have a local SQLite mirror, which means no round trips and it means no rate limits. It's obviously native to the agent, and the auth is pretty much solved one time because the CLI holds the token, and then you are all set. So the bottom line, APIs are built for code, MCB is built for tools, and CLIs are built for agents, especially when you're paying per token or, you know, managing your session limit. Okay. So what is printing press? What are we looking at today? So if you go to printingpress.dev,

00:05:09.570 --> 00:05:23.235
this is what it will look like. It's a very new tool. Just dropped like yesterday, and I've been playing with it all day today. And I've already built a few cool CLIs, which I'll show you guys when we hop over to Cloud Code. But printing press, It's funny. So this kind of was inspired by Peter Steinberger, the creator of OpenClaw,

00:05:23.475 --> 00:05:44.010
needing to make his own CLIs because the official ones were bad. So he built, like, GOG CLI, which is for Google, and people are saying that it's even better than the GW CLI that is, you know, Google's official CLI. So that's the whole idea. You have a factory, so basically a skill and a tool to help you build CLIs, but also if you come down here, there's a library. So you've got a a flight goat CLI.

00:05:44.010 --> 00:06:08.460
You've got ESPN. You've got movie goats. You've got recipe stuff. You've got linear. And if we keep scrolling down, you can see there's different Amazon, Craigslist, eBay, TikTok shops, Shopify. There's so many different CLIs on here that you can use. And now you guys can see where I got the the p p from. Anyways, what I would recommend if you wanna get in here and get started is just start off with the starter pack, which is exactly what I did. This has like four or five CLIs. It's got ESPN, FlightGoT, MovieGoat,

00:06:08.460 --> 00:06:16.060
and RecipeGoat. And then you can obviously clone other skills and you can install more stuff. And when you install the factory, that's what helps you actually build your own CLIs.

00:06:16.060 --> 00:06:30.505
So I will leave links to this in the description. I will also leave a link to the library of different CLIs, which is the GitHub, and I will leave this printing press one, which is what you need to help build other ones. So basically what I did is I took all three of those URLs,

00:06:30.920 --> 00:07:43.130
and I went into my Cloud Code, and I said, hey. Read all three of these. This is a new tool I'm seeing that has a bunch of preloaded CLIs, and it also helps you build CLIs, and just install everything I need. So like I said, this is the main command if you wanna run the starter pack, and then you need the factory as well in order to build your own. And it's super, super easy. You basically install it, and then you can do natural language requests to use all this stuff. The one prereq is that you're gonna need to get Go, and it's basically as simple as asking Cloud Code to do it. So if you drop in those three links and you say, hey. Help me get this set up. It's gonna come back and say, okay. I figured it out, but you need to install this first, which is Go. And it's a free open source programming language made by Google. It's designed to be simple, fast, and it's great for building command line tools, so CLI tools, web servers, cloud apps, and other AI related stuff. It's a very popular language, and it's, like I said, completely free to download. So that'll take you maybe one minute. You tell Cloud Code, okay. Download that for me. And then you just follow the prompts. Cloud might ask you to do a few other things, but you'll be able to get set up super, super easy. And why is this a big deal? Because most websites your agents want don't have a clean API, but printing press just lets you basically build your own with the CLI. So ESPN, for example, no public API. Craigslist, no public API. Allrecipes has anti scrape protection, but the CLI uses a real Chrome session.

00:07:43.535 --> 00:07:57.535
Domino's has no public API. School, as you guys saw, no public API. So if I come into Cloud Code, now that I've got this all installed, I can ask, can you take a look at our printing press library of CLIs and tell me what we have access to? Here you can see it's using the printing press catalog

00:07:57.140 --> 00:08:02.500
skill, and what it's gonna do is it's going to list the ones that we've already installed, and it's also going to list the available

00:08:02.740 --> 00:09:05.550
CLIs in the catalog that we could install. Okay. So here is what we have. These are the three local ones that I've just built. We have school, we have tally, and we have YouTube. And I basically just transformed my, you know, YouTube data API as well as the tally API I was connected to and said, hey. Can you just turn this into a CLI? So now it'll be faster and more efficient. And then, of course, school, it had to reverse engineer. So it did some deep discovery, looked at school, and it figured out how to basically create these endpoints through a CLI. So that's just really cool. Do you think that I could have done that myself? Absolutely not. But this just figured it out for me in, like I said, ten minutes. And then we've got some other ones that are installed as skills. We've got ESPN, FlightGoat, MovieGoat, and the RecipeGoat. I also built a skill around the tally one, which I'm going to do for YouTube and school as well, but those are the five you can see here. It didn't actually pull the catalog stuff yet. It said, do want me to check what's available in the catalog? I don't really care because I could just go here, and like I said earlier, we can look through all of this. And, like, let's say we wanted this Airbnb one. This just takes you to the GitHub repo, which I showed you guys earlier, which is the library of all the different CLIs that you could install. So now if I just say, what NBA games are on tonight?

00:09:05.870 --> 00:09:08.510
What we're gonna see is it's going to use the ESPN

00:09:08.675 --> 00:09:11.155
skill right there, p p ESPN,

00:09:11.315 --> 00:09:40.105
and it's going to pull back that data for us. So it says, okay. There are two NBA games on tonight, eastern time, Knicks and Sixers at seven, and Spurs and Timberwolves at 09:30. You can see right here that is exactly correct. This is in central time, so eastern time would be one hour ahead. So what I would recommend is you go in here, you take a look at which of these might be useful to you, and then you just pull them in and you test them out. They showed a cool example here with one called contact goat. Find a verified email for a person you've never met. It looks them up on LinkedIn. It cross checks them on happenstance,

00:09:40.105 --> 00:10:43.305
and then it does a deep line verified email check. Though I haven't personally tried this one, but the ability to maybe do things on LinkedIn through a CLI is pretty cool. So hopefully you guys understand the value here and how easy it really is to get set up. The last thing I wanna do now is just show you what it actually looks like to build your own. So I'm pretty sure there is a Hacker News one that already exists on the website on the catalog. But let's say I did wanna build my own, and we're gonna take Hacker News as just an example. I would basically just say, hey. Can you please use printing press? Can you use the CLI factory to help me create my own CLI? I wanna be able to pull in articles from Hacker News and, you know, just get insights every day from that site. And then I also just gave it a link right there to the page that I was just on. It's using the printing press skill once again. Now Hacker News doesn't actually take any authentication. Like, we should be able to just pull it in. And so this isn't, like, the most impressive demo, so that's not what I want you to take away from here. The point is that you can just ask a natural language, and it will start doing all the research and investigating and, like, reverse engineering things and then help you build it out. But if it does take, like, authentication cookies or,

00:10:44.160 --> 00:12:20.270
you know, OAuth or an API key, then you still basically treat it the same way you would like an API. You would be putting those in your dot ENV and storing them in there. And then when you build the skill around the CLI, it will understand that it needs to pull from that. Another thing to keep in mind is let's say you have some sort of quota. So let's take YouTube for example. I can only post a certain amount of comments per day through the API, and if you got a rate limit there, you know, just because you're using a CLI doesn't mean you're jumping over those quotas. You're still gonna have those limits. So anyways, this comes back and it says, I'm gonna research Hacker News. I'm going to catalog every feature that exists in any tool. I'm going to present what I found, and then I will generate you a Go CLI, build every feature, and then we will verify quality through dog food, runtime verification, and scoring. So at the end, we will have a fully functional CLI for Hacker News. It says that it's gonna take thirty minutes to sixty minutes, but it's not. It's always bad at those estimations. I don't know if you guys have noticed that, but sometimes it'll say, hey. This is gonna take thirty minutes, and then it takes, two. But, anyways, I'm just gonna say, yep. Go ahead and build that out for me. And so while this is doing that research and building it out, I'll talk about something else real quick, which is what can you do with those CLIs? Because you could publish them back to the library, and then other people could, like, publicly pull them in and use those CLIs as well. You can also just share them with your team internally. So for example, this Tally one that I just built, I have been able to push this to a private repo, and now I can just invite some of my team to actually, like, be a contributor to this so they can clone it, and then they can use the Tally CLI as well and maybe just swap out their own API key in their dot ENV file or whatever. And all I did was I said, okay. Cool. So you built me this Tally CLI and you built me this skill. Can you just package just that into a GitHub repo so I can share that across my team? And then,

00:12:20.670 --> 00:12:36.185
you know, a couple seconds later, I had this new GitHub repo. So, of course, what that means is you don't wanna be putting any of your API keys or your authentication stuff inside of the CLI scripts or anything like that. That would still be treated the same way as you treat, like, your API endpoints and stuff like that. So this actually just came back with a huge

00:12:36.560 --> 00:12:40.800
list. So you can see that there's different phases. It has to do all of this stuff,

00:12:41.200 --> 00:13:30.335
and then hopefully by the end, it's gonna be able to actually have a working CLI for us. So once again, it's not exactly that like, hey, this CLI is going to give you so much more functionality than if you just used the API, but it's the ability to, first of all, be able to turn anything into a CLI and start natively working through just CLIs rather than APIs and MCPs. So maybe think of an example of something that you use a lot that doesn't have a great API or, know, it only has an MCP server or whatever it might be, and just think about the fact that you could now tell Cloud Code, hey. I use this software for x, y, and z. Do you think you could help me build a CLI around that right here in Cloud Code? And, hopefully, it will give you research, and it will build you a list like this, and then you'll finish up with the CLI. So it's kinda just like the checklist of thinking about how you talk to tools. I would say, like, CLI would be tier one. If there's no CLI option or you just can't do it, then the API would be next. If there's an API,

00:13:30.495 --> 00:13:33.055
you're pretty much, like, a 100% gonna be able to make CLI.

00:13:33.760 --> 00:13:48.080
But then if there's no API and you can only use an MCP, then that would be the final option. Alright. So all of that has finished up now. We can see this is exactly where the binary actually lives. It's giving some examples here where you could actually, like, invoke this command basically in the CLI.

00:13:48.555 --> 00:13:57.035
Or as you guys know, it should have built kind of like a skill around this, and we're able to just invoke it with natural language. So I'm just gonna go ahead and see what happens if I say,

00:13:57.595 --> 00:13:59.995
can you test this out using the actual

00:14:01.280 --> 00:14:02.080
skill

00:14:02.160 --> 00:14:26.055
and just go ahead and see which sites are dominating Hacker News today? That came back super fast. It said, okay. Last twenty four hours of stories with a 100 plus points ranked by total score, and we get these 10 stories right here. So anyways, this demo wasn't about the fact that we're doing this with Hacker News. It was just to show you guys how easy it is to set up these CLIs. And from here, you can build skills around them, and you can chain them together. And from here, you can build skills around them, you can chain them together, and, of course, you can access the catalog

00:14:26.215 --> 00:14:27.975
on printingpress.dev.

00:14:28.470 --> 00:14:45.005
And I'm assuming that this is just gonna continue and continue to grow. And I'm assuming this is just going to continue to grow and grow. So, anyways, wanted to keep this one quick, but I hope that you guys learned something new or enjoyed the video. And if you did, please give it a like. It helps me out a ton. And as always, I appreciate you guys making it to the end of the video, and I will see you all in the next one. Thanks, everyone.
