Hello, everyone, and welcome to the Stack Overflow podcast, a place to talk all things software and technology. My name is Ryan Donovan, and today we're going to be talking about the advances in the humble terminal. A lot of people, a lot of developers love to operate out of the terminal, but could it be better? Could it have AI? We're going to talk to Warp founder and CEO, Zach Lloyd, today. Welcome to the show.
Thank you for having me here, Ryan. Excited to be here. So at the top of the show, we'd like to ask everybody how you got into the world of software and technology. What's your origin story? So I did a little bit of coding as a kid. I always liked computers. We had an Apple IIe, and I remember coding some stuff. But for real, I didn't get into it until actually freshman year of college when I decided to take coding class.
I remember very distinctly, it was the first time I'd ever done like an all-nighter as an assignment. I was programming basically a Boggle game and like trying to solve Boggle. And I just got super into the... puzzle solving and the building aspect of it. And since then, I've actually done some stuff outside of software, but I've always kind of come back and really love working with tech. And your current company, your CEO and founder, how did you come to...
decide to jump from writing code to managing a whole business? That's a great question. So I was a professional engineer for a long time before I decided to found. So I was a principal engineer at Google. I used to... be the engineering lead on the Google Docs and Sheets team. I loved building. I thought a cool challenge though, after being at Google for a long time, would be to see if I could build something.
outside of a big company and just there's a whole different set of challenges when it's kind of you versus the market as opposed to just like you're doing something at Google, you launch it, you're probably going to get millions of users just by virtue of Google's distribution and network. And so I thought it would be a cool way to challenge myself and try and build something useful on my own.
And as far as like working on this particular company, I was looking for pieces of software that I regularly use. So I am a developer. So I was looking at developer tools. I was looking at tools for knowledge workers. And I was looking for something where there really could be a big improvement made to the product experience. And it was something where it was widely used and there could be a big impact. And I kind of was like, I use the terminal all the time.
It's probably my least favorite thing to use, but it's essential. And I know that I've always worked with developers who, if they get really good at using the command line, they can do sort of... magical things very quickly. And so I was like, is there a way to bring that power to more developers? And the more I thought about it, the more I was like, hey, I could think of a lot of cool ways to improve this as a product.
Wasn't super clear if there was going to be a good business around that, although that's changing now. But yeah, so I was like, you know, this would be a really potentially impactful thing to try to improve for a lot of developers. And that's right. Like we said, a lot of developers use a terminal. I remember walking around the last office I was in, just seeing every developer on the terminal all the time. We've written articles here about...
you know, Emacs versus Vim. Yeah. That's classic. Yeah. And it's interesting. Like, a lot of the terminal productivity and power comes from knowing the sort of arcane spells you have to do to, like, get everything to work quickly. That's right. What's the sort of way you can give people that power user access without having them consult man pages every couple steps? Yeah, so this is where...
sort of the rise of LLMs has, has been game changing in warp. You can just tell the terminal what you wanted to do in English. So let's say you want to set up a new project, new node project. You can just write. help me set up a new node project, bring in the following dependencies, do it in this directory, initialize the Git repo. Literally, you can write that in English. You can even say it in English. And what will happen is that through the LLM integration, something we call agent mode.
All of that prompt will be translated into... series of commands, and the computer won't just execute commands, it will gather context, check whether or not the command is executed correctly, and sort of, you know, agentically do what you tell it to do. which is a totally different paradigm than what I used to do of like, you know, type the command, look up the flag someplace. Maybe you had completions configured.
Maybe you got to bug your buddy on the team to be like, how do I do this? It's drastically lowered the barrier to entry of using what is one of the most powerful tools in the developer's toolkit, which is pretty easy. It's pretty awesome, to be honest. It's very cool. Yeah, it sounds pretty awesome. And I didn't use the terminal too much, but when I did, it was installing dependencies. Do you have a sort of automated, like...
gathering dependencies, installing them before you to sort of ease that process? So it works with anything. So if you wanted to install dependencies, what it would do is... You would point at a project to be like, hey, I'm missing dependencies. Maybe you would come there because there was some error printed in your console. And if there was an error printed in your console, Corp is smart enough to take that error message, figure out what you need.
It has general knowledge of what's available via NPM or PIP or whatever and get you the dependencies. It also, if you wanted to, you can have it literally be like, hey, look at my code base and figure out. what libraries I'm using and make sure that my package.json is set up correctly. It's super duper flexible and it can do that for dependencies. It can do that for you have a compiler that you needed to fix. It can do that for you have.
logs on a production server that you want to read. And so it's one of the cool things is that because the command line is such a low-level tool in the developer stack and has so many different CLIs available, anything you can do in a CLI, the AI can help you too. I was just thinking, you built up a whole new terminal system for this. And I wonder if there's much difference between building an entire terminal program and just bringing something that interprets.
text within another terminal or CLI system. Is there much difference? It's a great question. So the quicker way to do what we have done is definitely to not write a terminal, but write a terminal app, right? And you actually see these things exist on the market. I don't know if you've played with Cloud Code, but Cloud Code is Anthropics' new terminal app, and you tell it what code changes you want, it does it. There's various other things that work in the terminal like this.
And that's definitely much less work. However, when you actually write the terminal and like the platform app. you can do things in a much richer way from a user experience perspective. So if you're limited to being a terminal app, as opposed to like the terminal, all of your rendering has to be done via like characters. The mouse interactions don't work. You can't do any kind of like interactive GUI elements. It's literally like one of those apps, the way they work is they're just like...
using the terminal screen as a place to write characters. Whereas if you actually are warp and at the level of the terminal app, it's kind of like the difference between being the browser and a webpage. If you're the browser, then you can... do whatever you want outside of the webpage context. So we can sort of like...
read the output of different terminal commands and different programs and do intelligent things on triggering how the AI interacts, where if you're in the sandbox of being one terminal app, you can't do that. So it's a great, it's a great question though. And you talk about using other terminal apps in the other command line. Do you run those within the terminal, or are you just calling those separately?
There's different ways of doing it, but to give a concrete example of something that we can do that is really cool. So we can actually give you AI assistance in any terminal app. So say you're running like... the Postgres SQL REPL, so PSQL, and you want to interactively query your database tables. So without the PSQL REPL having to do anything to build an AI feature, Warp, by virtue of the fact...
that we know that you're running PSQL can within that program, make it so that you can, you know, be like, how do I join these two tables together? And it will generate the SQL query for you. So again, being one level up. lets us interact with those apps in a pretty powerful way. I think the AI is an interesting...
Add to a terminal application because terminal application, like talked about before, is sort of about knowing the secret codes, right? Yes. A lot of devs value that as a technology. So if somebody wanted to just write in a regular terminal. code without the AI, they'd be able to do that? Yeah, exactly. That's how Warp started. So Warp's initial value to a user was actually just like a much more usable terminal interface.
And so Warp is, it's fully backwards compatible. So you use it to run, you can run Bash, Phish, CSH, any of your common shells, and you can use it. Like, say you don't want to use AI at all, and you're like, I don't like AI, I don't want AI at my terminal. the value of warp is still there, you get a much nicer user experience.
The first feature that we launched within Warp was to make the mouse work when you're inputting long terminal commands, which is a crazy thing to say. But if you're using like regular terminal, like iTerminal VS Code Terminal, you try and click and put your cursor someplace. doesn't work, doesn't do what you expect. And so we tried to fix a bunch of those, just like I consider like annoying, like old school usability issues. So if you want to use warp like that, by all means do it.
that will definitely improve your productivity. But the AI features, I think, will transform productivity. So it's there for however you want to use it. Yeah, I know that is a big frustration. It almost seems like a lot of the terminal... command line stuff was built before GUIs. Oh, it was. Yeah, that's right. Yeah, the Windows CMD is just like, you haven't updated that since like 85, and it's just fine.
Yeah, I mean, we just launched on Windows and we're working with the Windows terminal team and they just have crazy requirements around backwards compatibility because there are. big enterprises that are still running like 16-bit programs through like you know command.exe it's like if you were to ever like mess with it it will break
things that will cost the economy a lot of money. So it's very, very old school technology. And the compatibility aspect makes it kind of hard to change, to be honest. So you have to...
respect that backward compatibility when you're releasing a new terminal in Windows? Yeah. Or it's like you have a choice as someone who's developing an app like this. So you can respect the compatibility, which... is what warp has tried to do by and large or you could be like no you know this thing needs a wholesale reinvention and it's too hard to like make it work with the old stuff
And that is kind of freeing if you go that route. But the problem is it just makes it very hard for people to adopt unless they're totally new to the ecosystem. So, you know, we wanted to build something that. you know, existing developers could just open up and it would work in a way that they expect with their existing scripts and all of that. So we went with the way of like trying to innovate while still being compatible. And you built the terminal in Rust. Is that right?
Can you talk a little bit about the decision to use Rust and whether you eventually found it better or you found it had regrets? So we're happy with the decision. So the progression was we actually prototyped Warp with WebTech and Electron just to understand if the product idea was compelling.
Then we switched to Rust after finding that it was just going to be very hard to get the performance to the level that we wanted. That was the primary motivation. And my background of building these like... pretty data intensive web apps at Google, like Google Sheets, for instance, you want it to have performance at the same level of Excel. It's really, really hard to basically impossible to do that in web tech.
or at least it was when I was trying to do it. And I don't think it's like fundamentally changed that much unless you use something like WebAssembly and WebGL, which is actually what... We do that. So we have a web rendering and we compile our Rust into WebAssembly WebGL. So we were like, if we're not going to use web tech for this, what's a solution that is high performance, that is cross-platform, that has good community?
I really like working in sort of strongly typed languages. And so we went with Rust. It's definitely harder. It's a steeper learning curve for a language. We have to do more. So for instance, we have our own... full graphics stack that we wrote. So it's like, you know, we do all the rendering on the GPU. So even up through like shader code, we have that work, which it's not an architecture I would recommend for most apps just to be clear.
But we're pretty happy with where it landed in terms of like super high performance. And we've been able to successfully. use, you know, 90 plus percent of the same code base on Mac, Linux, Windows and the web. The only other stack that I think you could really do that with would be like the web stack. So it worked out pretty well.
That's interesting to talk about having to write your own rendering stack for a terminal application. What things does a terminal application need to render and need shaders, did you say? Yeah, so great question. the primary requirements for rendering terminal app are like, honestly, we could render almost any graphics are like, you need to be able to render text. And so that's like glyphs you need.
some variant of rectangles, rounded rectangles, rectangles with borders. So there's one sort of like code path for rendering, just like rectangle rendering. There's one for image rendering. So if you're doing like icons. And that's kind of it for our primitives, which is crazy to say. There's very few primitives. So to do all of the graphics in a terminal app, we probably have less than 500 lines of shader code.
Now, there's a whole UI framework on top of that that looks something like Flutter, where you go one level up and it's like you define abstractions for... making rectangles and image elements and hover effects and all that stuff. But the actual graphics code is very minimal. It's pretty cool. So in terms of actually using... the terminal, do you use it yourself to write code? Yep. That's our thing that we live in. We use it to do kind of everything at this point. Yeah. Everything from like.
Git and production stuff to increasingly, like you said, actually just telling it to write code and it will produce code and show you code diffs, which is pretty awesome. I've been talking to one of our engineers here. Their sort of hot take is... When you're dogfooding like that, I hope your experience sucks. Do you feel like that's...
That was your experience at any point? And was that useful? Oh, yeah. No, the thing was horrible at the beginning. But I think your engineer is right. If you don't feel the pain, then you're doing something wrong. And for us, like we want stuff in our dog food build as fast as possible, even if like our kind of rule of thumb these days is that it probably shouldn't like.
slow us down but as long as it's something that's not like going to actively harm the productivity of our engineering team it goes on the dog food even with a million rough edges but yeah that was like The first time I felt like people might actually want to use Warp was when we were able to use it successfully ourselves. How easy slash difficult was it to get the AI piece working in there?
So we've had various iterations of it. So we had AI, and even before ChatGPT launched, we were using Codex, which was like a different coding API from OpenAI. When ChatGPT first came out and the GPT models first came out, we sort of did the thing that a lot of companies did, which was we stuck a chat panel in Warp with AI, which was by far the most expedient way to like...
get that experience into warp. And then nine months ago, we ripped that chat panel out and made it so that the primary terminal input. is how you interact with AI. And that was like a bigger, a much bigger change and a much deeper integration. So when you use warp, you type a command or you type English in much the same way where if you use like...
Chrome the browser, you can either type a URL or you can type a search query. That's how Warp now works. And making that change and interleaving the AI directly within the terminal session. That was a much bigger engineering effort from the user experience standpoint. And then we've made the AI way, way, way more powerful and sophisticated. So we're adding things like...
It understands your code base context. It can create code diffs. It can delegate to different models based on what type of task you're doing. It can help predict the next command that you're going to type. And so we've kind of... Most of our team, not all of it, is now working on how do we make the intelligence aspect of warp most useful for people. Do you have any sort of agentic aspects? Like, can your AI use tools or inference time data, sort of reasoning stuff? Yeah, so it's super agentic.
tools that it has so that the first tool actually in the most powerful tool is it has access to use any CLI so for instance if If it wants to read a web page, it can curl it. If it wants to make a pull request, it can use the GitHub CLI. If it wants to understand process usage on your computer, it can run PS. It's one of the cool things about having AI in the terminal is that...
You don't have to do like a one by one tool integration to give the AI power. The AI has the power of all of your command line apps and it can actually help you install new ones too. So that's like the first tool that it. has. But we have added more tools. We've added a very specific code writing tool, which can give you diffs in your code files. We're looking at integrating MCP, model context protocol.
get your Slack messages or your Notion or that kind of stuff. But the short answer is anything that has either a CLI or if it has an API that's callable via curl, it's already usable directly in warp, which is amazing. That is interesting. I've talked to... folks from other companies doing API stuff. And it almost sounds like we're moving to a future where there's going to be one thing that you interact with that does everything for you. Do you think a terminal will be the sort of dev one thing?
It's possible. So if you look at, you know, the popular IDE based AI tools like Cursor, Windsurf or Copilot, what you see is that the agentic features in them. have kind of started as like chat panels that can do agentic stuff and are kind of morphing into something that feels a lot more like a full-fledged command line interface. And it's interesting. So Anthropics Cloud Code.
literally is a terminal app. So it's like they're kind of moving back to the command line paradigm. I don't know exactly what it's going to look like, but I do think the terminal. is really, really well set up for it as you think about agentic stuff. Like the terminal is already a place where developers naturally are telling the computer what to do. It's already a place where there's a concept of like a long running task.
It already allows for multitasking, which I think is something that's coming with a lot of these agent platforms. So a lot of the primitives for an agentic future where developers are telling the computer what to do. are kind of there in the terminal, which is like a crazy full cycle thing if that's where people end up. I don't know if that is what will happen, but I do know that there is like a lot going for it and a lot of value that our users are getting from.
these agentic features in the terminal right now. Yeah. I mean, you always want to get your... your software or whatever, where the people are working, right? Exactly. One of the other things that we see happen a bunch in warp is like people come into work because they might just want a better terminal. They've heard from a friend like, Hey, this is really nice to use. And then.
What we're able to do is surface some sort of like wow moment for them in AI that they may not even have thought to do. But like, let's say in the course of doing their normal work, they hit some missing dependency. Well, we can be like, hey. Do you want us to just install this for you or fix this like messed up node modules thing for you? And no developer wants to spend their time doing that. And so if you can just do that for them, it's like an amazing aha moment where it's like, oh.
Yeah, I actually kind of like this. I didn't think I liked AI, but I don't like fixing node module errors. And so this is awesome. If I have five different versions of Python on my computer, can you pick the right one? Yeah, no, it's like no, because no developer I've ever met wants to. to spend time on that stuff. And so to the extent that the AI can help with the really annoying parts of their job, it's pretty awesome. So what are you most excited about the future of?
you know, either the terminal or AI or AI in the terminal. Yeah, so I think this is like the coolest time ever to be working in the DevTools space. It's way cooler than when we started Warp. It's cooler from a business perspective. It's cooler just from like a what the heck is going to happen perspective. I think no one knows exactly where things are going, but the bet that we're making is that the models are going to keep improving.
They're going to keep getting better and better at reasoning. That's going to allow for more and more autonomy for them. But we think that it's going to be the developer's job to actually sort of manage this autonomy and learn how to use it effectively. And we're not of the position.
that the right direction is to replace developers here we're like as a developer what i want to do is like multiply myself multi-thread myself allow myself to do more and have you know kind of like more output building stuff that i'm interested in less time doing annoying stuff and so to the extent that warp or any of these other developer tools companies can like bring about that future. I think it's a super exciting time to be in this space.
That's the end of the show, ladies and gentlemen. And while we usually shout out a question on Stack Overflow, I'd like to try something different and ask you all a question. What terminals do you use and how much time do you spend in it? email me at podcast at stackoverflow.com and we may feature it in a future blog post. My name is Ryan Donovan. I host the podcast, edit the blog here at Stack Overflow. You can find the blog at stackoverflow.blog. And if you like what you heard today,
Leave a rating and a review. It really helps. So I'm Zach Lloyd. I'm the founder and CEO of Warp. You can find Warp at warp.dev. We're now out on all platforms. It's just been a very longstanding feature request. If anyone is... Heard about Warp and waiting to try it on Windows. We're now officially launched. But, no, this has been an amazing conversation. All right, everyone. Thank you very much for listening, and we'll talk to you next time.