Austin: So iTerm2, pretty vanilla. No IDE these days. And as many panes as my monitors can handle. Pretty barebones Claude Code setups, so not a lot of plugins or skills or MCPs, pretty simple CLAUDE.md, inspired by your Twitter posts for the vanilla setup. I think it's the best way to learn the models. And then a good amount of subagent use, adversarial review.
Rahul: Yeah, mine's gotten increasingly background heavy, and most of my sessions are information gathering. It's like, why is the memory spiking on the service? Or how can we get this project done faster? And it's a great way to fan out a lot of sessions and gather a lot of context. When I do things local with Claude Code, it's usually more hands on programming, closer debugging, or I need more services or context on my computer.
Boris: Has that changed a lot over time? Do you start with an Austin setup of just terminal, terminal, terminal, terminal? And then you move to this?
Rahul: We have so many services, a lot going on: databases and message queues and Reddits and all that. And so having multiple instances of local dev running can become a constraint very quickly. Especially with the latest models, I think they require much less hand-holding. And sometimes you just gotta let them cook, get out of the way. And so I found myself carrying my laptop with the lid open a little bit too much. And so then we decided to move.
Boris: That's funny. I know exactly what you mean.
Austin: Yeah, make sure Caffeinate is running, right?
Rahul: So we've implemented agents at pretty much every part of our business, but especially in the engineering lifecycle. So if you take the process of building and shipping software, everything from coming up with ideas, figuring out where the bugs are, getting notified when there's problems in our logs and our systems, to writing the code, to reviewing it. And sometimes after they're deployed, looking for how they're doing in production and seeing if they're doing the thing you want. We've tried to build systems along this whole stack. We've also thought about it from the lens of security, trying to find bugs and other issues.
Boris: Okay, so now you're at the point where you're using the model everywhere throughout the whole lifecycle. How did you get there? What was the first place where you started using Claude Code? And then how did agents expand out of that?
Rahul: We slowly realized, clearly this thing's going to continue to improve and maybe we shouldn't build for 2.7, maybe we should build for whatever is coming next, or the model after that. And over time as we built these harnesses, we've learned to step back and just wait it out. Because a lot of time we end up removing this scaffolding over and over again, because the model has just outgrown the harness. At any given point, when there's a shortcoming with the harness or the model, we've tried and we're not perfect, we also need to make the product work today because otherwise we won't have a business, but we've tried our best to go the other direction and give the model more tools, more context, more agency with the goal of almost being able to treat our agents like a coworker. So, hey, can you go figure this out? There seems to be some sort of exception that's popping up. Or maybe this customer is complaining of a certain issue. And we want the models to be able to access the right systems, the right level of access, and produce the right amount of right code. And so just wanting that simple goal allows us to figure out what we need to do to give the model enough access to do these things.
Austin: I think it's a velocity bet in a lot of ways. Right? Because you're basically saying, I think the stuff we would put in place to make this work now really well is going to become technical debt really quickly. And that's going to slow us down. If we aim a little further in the future or sometimes a lot further in the future, we'll actually make it further with the resources we have.
Boris: I have so many questions. But maybe one direction we can take is, how do you make sure they have the right guardrails? They can access this data, but not this data, or how do you make sure the cost is under control? How do you make sure the code quality is good? And how have you guys thought about this as you scale up the systems?
Rahul: We've also, at various levels on the stack, tried to implement safeguards. We also studied the trace a lot. One of the things that I think we've tried to focus more on is studying individual traces and less on aggregate level benchmarks. Benchmarks do give us a lot of information cross model, but a lot of the time there's usually a correct trace. It's like, what is the command the model should have run in this scenario, and why did it not get there? Is this a context issue? Maybe it does not have access to the right tool? And just following these simple traces for workflows that should work allows us to get there in the right way. We've implemented a lot of layers of defense, and we'll continue to do that. How many layers we have also allows us to move faster and give it more agency and more access. And so again, at every part of the stack, we've done everything we can to give the model what it needs, but nothing more.
Boris: So essentially, you go to BigQuery or Datadog or whatever. And you give it a read-only service key. This is essentially how you think about it?
Rahul: That's right. Yeah, exactly. I just want to be able to talk to my agent like I talk to my coworker. And so we're almost focusing on the default experience, the iPhone experience. Where you open it up, there's a text box. You just say what you need to get done, not how to do it. The prompts must be declarative. We don't want people to instruct the agent to do it in a certain way. We just want people to say, implement this feature, or fix this bug, or help this person out. And over time, especially when you focus on the correct trace. So what must the agent do? It must first query the source and then it must query these other sources and read the code in these repos. Just by focusing on what the correct trace in your head is, you can then shape the agent trace purely through prompts and tools and skills to get there. And thankfully we're also on this exponential increase in model capabilities. So maybe if it's not working right now, you just got to trust that it will get there. With that belief alone, just ship it and wait.
Austin: And the one thing I'll add is good old fashioned hard controls on top of that, like you said, principle of least privilege stuff. The basics of not even giving it the opportunity to do certain things.
Boris: And how do you think about enforcing it? Is it the security team's job to do this, or are you federating out the design of these sorts of systems? How do you think about that?
Rahul: The really exciting part about this is the infrastructure has been built by the security team, and the security team is very closely related to this. So they helped us set up the network access policies. They helped us get the keys. And they're also regular users of these agents.
Boris: How do you think about cost controls? How do you think about code quality? What else do you think about as you scale it?
Rahul: We're continuing to look for cases where, again, we can guarantee we know for sure the worst thing that could happen if, for example, this code has a bug or something like that, the effects are extremely constrained and we do have an upside and we're finding more problems like that. And we're trying to use this hammer for that. We're also expecting a massive increase in the amount of productivity, especially with the next few models coming. And so we're readying our verification loops, especially with CI and CD.
Austin: I think also changing what our reviewers look for over time because as the models get smarter, they stop making certain classes of mistakes. And so it's not worth spending your reviewer tokens on that anymore, right?
Rahul: Yeah. We've invested in our own code review bot as well, which is also built on Inspect, our background agents API. We pull from some memories of things that we especially want to look for. We have certain teams that write their own skill files that look for certain things so that they can codify the knowledge that they have built up over the years into these files that allow people to move a little bit faster.
Boris: It sounds like it's not just Austin and Rahul going in and breaking down every bottleneck. Although I'm sure you're doing a lot of this, how do you create a culture where engineers feel empowered and have the visibility and the tools, whatever you need, to find the bottleneck and to break it down?
Austin: It's just Ramp, right? Yeah.
Rahul: I think a lot of it is the culture that the company has built: a culture of experimentation, a culture of building something that maybe didn't pan out, and that's okay. We've tried something. You move quickly. I think one of the things that has been helpful is, because we've had free access to all the tools, to all our engineers, we don't really like to impose a certain token budget or a tool budget, or tell people that they should use this thing or that thing. And in general, it becomes a lot easier to speak the same language.
Boris: It sounds like you guys just built a huge number of these background agents, various APIs and systems internally. So you mentioned Project Glass, you mentioned Inspect, walk me through these. What are these tools? How do you use them? How are they built?
Austin: Yeah. So Glass is the home base for our non-technical folks. It's where they interact with the coding agent on a daily basis. And it's been our belief since the beginning that everybody should have access to this power. And this velocity increases. But you got to meet people where they are. They don't want to be looking at code. All the technical detail is not going to help them go faster. And some things need to be set up ahead of time.
Rahul: Yeah. Inspect, at this point, is basically a digital coworker. We've tried to give Inspect all the tools that a Ramp builder, so a product engineer or design person, would have. So this includes access to GitHub, and Linear, and Slack, and Datadog, and Sentry, and various other tools. And at this point you can ask Inspect to solve a support ticket, or fix a GitHub issue, or look at a Sentry error, or Linear ticket or Zendesk ticket, whatever it may be. It runs on Modal in the background.
Austin: You access it via web. Yeah. And a lot of people kick off stuff from Slack. So if you're in a conversation with someone about something and you @Inspect, can you go handle this or can you put up a PR to fix this or investigate this? And that actually ended up being the main way that adoption was spread, because you would hop into someone else's thread and @Inspect. Can you help them with this? And they'd see it and go, oh, you can just do that? Great.
Rahul: Yeah. And every PR now comes with its own VM and it's running for a little while so people can take over sessions, collaborate, it's all link based. It's all multiplayer. It just works out of the box. And again we've tried to focus on the correct trace, like, what should this agent have done? And try to shape it that way, so that it can do a lot. At any given point, sometimes people feel the urge to move back to local dev. We haven't fully finished this project, but we've tried to give Inspect that additional tool, that additional repo or dependency that allows people to stay a little bit further in the background.