Ship 26 NYC - Workshop - Build an Agent with Eve: The Open Agent Framework

VVercel
Computing/SoftwareInternet Technology

Transcript

00:00:00Welcome everyone thank you so much for coming so I'm Andrew I'm one of the tech
00:00:07leads on Eve and I'm here with Casey our other tech lead on Eve so yeah we've
00:00:13been building the agent framework for the past four months or so got a chance
00:00:18to release it to the world a few weeks ago at ship London and you know trying
00:00:22to refine it quite a bit since then and give you guys a pretty full full demo
00:00:25does anyone actually try to Eve yet before coming to today ship a few of us
00:00:30okay cool so yeah we will yeah kind of give you like the full run through here
00:00:35and you can follow along if you want it can be a little bit difficult so there's
00:00:40interactive portions to it and I'll let you know where to where to kind of like
00:00:43jump in but I wouldn't worry too much about trying to code along with me right
00:00:47now you can kind of just see see what see what we're doing here so yeah first
00:00:51things first we're just gonna get started on the command line and just jump
00:00:55straight into what an Eve application actually looks like so let's build a new
00:01:01Eve app of course we're just starting with our npx init command here and I'm
00:01:07gonna go ahead and run this and this is basically in a scaffold the most basic Eve
00:01:11application that we can have and when this is done I'm gonna show you kind of
00:01:14like what the directory structure looks like and what you get basically out of the
00:01:18box when you when you actually start using Eve okay so I'm actually gonna stop
00:01:26there so before we even move any further I actually just want to go straight into
00:01:29the directory and show you what this looks like
00:01:32all righty so yes you get an agent directory that is kind of the the pitch of Eve we are
00:01:44doing declarative file system based agents and by default an agent can
00:01:49literally just be an instructions file and nothing else and so if we
00:01:54continue our setup here obviously if you want to talk to a model you need to
00:01:58authenticate with something so we're gonna go ahead and start Eve dev and this
00:02:02is gonna walk us through basically the setup process to get connected to
00:02:05whatever model provider you want of course today we will use AI gateway which is
00:02:10for cells premier gateway product and we're gonna be obviously be deploying to
00:02:15her cell as well but you can certainly connect with your own keys and you can
00:02:18bring your own providers we'll open up things like codec subscription soon and
00:02:22things like that but for today we're just gonna go ahead and actually connect to
00:02:25over cell project I'm gonna use my team
00:02:35and so what this is doing is it just created a recel project for me and it's
00:02:40basically just authenticating my local state with our gateway and at this point you can
00:02:46actually just start talking to your agent and effectively what you have here is you
00:02:52you have chat GPT in a box so we just a full agent inside of her cell it doesn't
00:02:59really do much but it does have quite a few things built out of the box so we
00:03:04can ask things like who won the 2026 NBA finals and you'll see here it
00:03:12should invoke web search so there's you get a ton of obvious harness type
00:03:18features that you know you should never have to configure right these types of
00:03:21things need to just kind of work so obviously I'm talking my command line
00:03:26this isn't very very useful now but now let's actually put in the cloud and talk
00:03:30to it through slack so Eve has this concept called channels and so channels
00:03:35is basically the topmost layer of how you talk to your agent what you're seeing
00:03:39here it's kind of the default HTTP channel that lives behind the scenes but you
00:03:43know inside of your businesses we obviously need something more more
00:03:47interesting than that so let's go ahead and connect to slack
00:03:52and now you're seeing this is where we're really starting to blend kind of
00:04:03features of the framework and the Vercel platform side of things so here we're
00:04:06actually using Vercel connect and we're going to go ahead and connect this to a
00:04:09slack workspace so I already have one configured here it's called ship NYC
00:04:14okay and I can close this window and now we actually need to deploy it so you could
00:04:25see it's immediately prompting me here let's go ahead and deploy it
00:04:27and while that's going if you feel like it you can join this slack channel and we'll be
00:04:42able to interact with the agent in real time so it's Billy / Eve dash NYC if you
00:04:49don't want to scan the QR code but you can just jump in let me see if this is done okay
00:04:57so we deployed it here and if I actually open up this slack channel which I have
00:05:00here maybe it's easier if I do it so we should be able to tag ship NYC which now
00:05:10actually shows up in here so I can say hello add them to the channel and you will
00:05:18see that it's going to it'll start talking with us so if you guys jump in you can all
00:05:23tag it and you'll see we try and do things in here where you'll notice that like slack is
00:05:28going to be presenting things differently than say the terminal so if we if we come
00:05:32in here and do the same thing you know who won the 2026 NBA finals so you can
00:05:41kind of see that we're doing a lot of stuff for you out of the box so in the
00:05:44slack context you can see oh geez okay of course classic demos but in the slack
00:05:50context we're going to do things like show you the thinking indicators and what
00:05:53tool calls are being made and stuff like that so depending on whatever channel
00:05:56you're operating in we're trying to do a lot of stuff for you so you don't have
00:06:00to recreate all this like default UI yourself okay so now we need to I would
00:06:08like to show you a few things so you can actually see what's going on here and what
00:06:12you I want you to actually see what this actually looks like inside of Vercel itself of course
00:06:18I have way too many projects here
00:06:33all right and so actually yeah let's actually see this looks like because we should be able to
00:06:39debug this we'll actually see what failed it looks like a tool call actually failed so here's the
00:06:42message that I just sent if I were to open up this run so yeah you can actually see here that we're
00:06:49giving you this observability out of the box for these agents so every time someone sends a
00:06:52message or interacts with it we can jump into here and we can see you know what happened so in this
00:06:57case it looks like it attempted to load some sort of skill and and something something broke here so
00:07:03maybe maybe we have to debug you know what actually happened with with our with our skill set up so
00:07:08let's try it again
00:07:09okay very annoying classic demos okay but let's keep going and hopefully we can get past to you know to
00:07:31something more interesting so again out of the box we haven't really connected anything right what's the
00:07:36point of you you know if you actually deploy an ev agent and you have any data so let's go ahead
00:07:40and actually integrate some data with with our agent and I'm gonna grab so this is just an open API spec
00:07:47but this could be a postgres database it could be you know wherever you guys are keeping your data you
00:07:52can hopefully be able to connect these things pretty easily and I want to actually just go ahead and
00:07:56switch over to a coding agent now so let's just have so let's go into ship NYC and I'm going to open up
00:08:05open code and I'm just going to tell it to add an open API connection
00:08:20and so it's doing something somewhat interesting here so if you actually look at the calls that that it
00:08:28actually made if you notice it immediately knew to go inside of node modules Eve docs so something
00:08:35that we do to make building Eve agents very performant and reliable is we're actually shipping special
00:08:42docs inside of the package for you so it understands this concept of a connection which is a first class
00:08:49primitive in Eve and if we actually just go back to our editor here so you'll see it went ahead and it
00:08:55added this new this new other file and so it also understood it you know needs to configure a username
00:09:03of some sort it's able to import first class API from me for open API connections and if we actually go
00:09:10back to our agent hopefully this works let's say what's the weather in NYC
00:09:23and so now you can see it it basically used the connection right away so you can see that it made
00:09:27this connection search to a call it's looking up coordinates and now it's immediately connected to
00:09:33that open API spec and so again this could be you know any data source that you guys have but
00:09:38um yeah so that's kind of that's that that's kind of the idea around around connections and
00:09:43now let's let's make it a little bit more interesting so let's say um you know update
00:09:50update your instructions to be an NYC city expert
00:09:56update your new new new new new new new new new new new new new new new new new new new new new new new new new
00:10:08Cool, so made those changes, let's just check, say who are you, and there you go.
00:10:25So yeah, basically everything just kind of updates in real time, and now let's just go
00:10:28ahead and redeploy this.
00:10:58And let's go back to Slack, and there you go, so yeah, in a few seconds you're basically
00:11:22deploying your agent to the cloud, and kind of updating stuff in real time.
00:11:27So I want to stop there, because this is basically the most basic demo I could possibly give.
00:11:31Is there any places that you guys want to dive into?
00:11:34I'm prepared to go build stuff in real time here if you want to see certain things.
00:11:36So yeah, if you have questions, if there's anything up to this point, if something's not
00:11:40making sense we should go into, let's-- we'd love to jump in.
00:11:43Hey, how's it going?
00:11:46Curious if you could show us how implementing an external data store would look like.
00:11:51So you mentioned you can use any database, how about a NoSQL one?
00:11:55Yeah, absolutely.
00:11:58Let's see if I could actually have one.
00:12:00So obviously it's not going to be able to connect to one, but so-- and maybe what I'll talk about
00:12:04for a second too is like, there's this concept of tools and then connections.
00:12:09And so what I just showed you are connections, which are basically a special kind of tool.
00:12:13So a tool would just be a one-to-one mapping.
00:12:15So let's actually-- and actually I can-- let's prompt this and I'll show you one of our other
00:12:20examples that does use Mongo actually.
00:12:22But let's say let's add a stub MongoDB query tool and assume mvars are set.
00:12:35So I'm going to let that go, but I'm actually just going to pull up another project that has
00:12:40Okay, so one of the concepts again, in this declarative framework is you can just go drop tools into a tools folder.
00:12:54And so that is exactly what I did here.
00:12:57We have a MongoDB-- I have two tools, one called query and one called mutate.
00:13:03And I'll show you why they're separate in a second.
00:13:06But this literally looks-- sorry, this is a very large font.
00:13:12And there's a lot of-- there's a lot of code here, but effectively all you're doing is inside of the tool call,
00:13:17you can go import any Node.js library you want.
00:13:20We also have-- you can interact with sandboxes and things like that.
00:13:23But yeah, adding some external data stores is effectively, you know, connecting to that store
00:13:28the way you would in any other back-end application.
00:13:31And then it's kind of on you to design what the right query patterns are.
00:13:33So the reason I actually have these separated is if you look at mutate, it requires approval.
00:13:42So mutate will never run unless a human is put in the loop to go approve that mutation.
00:13:50So it's very, very easy to do things like this.
00:13:53And we can do like a very contrived example.
00:13:55But again, this comes down to like what some of the actual built-in tools are.
00:13:59So let's say, you know, let's test your question tool.
00:14:04Ask me a question.
00:14:12And I'm going to copy this.
00:14:23And I'm going to do the same thing over here.
00:14:31So yeah, so in the TUI you have here, basically questions are going to look a certain way.
00:14:36And then over in Slack, you'll see you get a very-- you know, you'll get like a more like native experience inside Slack.
00:14:42So channels, they basically kind of own their presentation and you get a lot of stuff, you know, again, just kind of out of the box that kind of works and works in that surface.
00:14:53So so yeah, so approvals, they would very similarly flow through flow through this the same UI.
00:15:07So I guess I'm going first, so I'm testing one, two, three, I'm using Eve right now.
00:15:12One of my things to learn because Vercel has been just shipping just random kind of cool new products is how it works with connectors, voice or WebSocket.
00:15:24Yeah.
00:15:25Because right now with when it comes to connectors, you have stuff like Composio.
00:15:30When it comes to WebSockets, you have stuff like LiveKit.
00:15:32I mean, voice, you have stuff like LiveKit for WebSockets, you can do something like PartyKit from Cloudflare.
00:15:38And so all of those are areas that I have experience in.
00:15:41And I'm just wondering, like, it would be nice to go all native, especially because Eve can probably integrate these things together.
00:15:47Yeah.
00:15:47So I'm curious about those type of workflows, especially connectors, because, you know, it's unmature yet compared to Composio that might have like thousands of connectors.
00:15:56And the, let me get my thoughts together here, the, they already have a workflow of building these API connections and triggers in advance versus us having to customally tool these things together.
00:16:10So I'm just wondering if that's in the pipeline also, and how that all could work to go completely native.
00:16:17Yeah.
00:16:18Yeah.
00:16:19It's a great question.
00:16:20I'm going to go into this.
00:16:21So one, I would say the lower level API as an Eve exists, so these coding agents can go build that thing.
00:16:28So if we, like, let me pop back over here.
00:16:30Okay.
00:16:31Yeah.
00:16:32So it, so yeah, presumably finished like this, this MongoDB example.
00:16:36Yeah.
00:16:37So you have your MongoDB tool.
00:16:40So now, so let, let's just prompt it and say, I'm building a new real time channel that must use WebSockets.
00:16:49Um, build this new channel with basic debounce messaging.
00:16:57So, uh, this is like pretty complex.
00:16:58So, so we've actually done, uh, voice demos on, uh, on, on, on Vercel, which recently shipped WebSocket support.
00:17:05So WebSockets are, are also built into Eve.
00:17:08Like this is like a channel primitive that, um, I think this is going to go figure out and probably come up with something somewhat reasonable to have a WebSocket channel to communicate over instead of, you know, regular, regular HTTP.
00:17:19Um, but yeah, let's see, let's see what it actually does.
00:17:22So we'll, yeah, we'll, we'll let that keep going.
00:17:24But so that's like the low level primitives.
00:17:25Then there's the Vercel connect team, which is technically separate from Eve.
00:17:28And they've already shipped things like linear Slack, GitHub, and so they're, they're going to keep kind of adding to that, to that surface area, right?
00:17:35Like at the end of the day, if you can't invoke the agent from wherever your business is, it doesn't really matter.
00:17:38So, yeah, so they're, they're taking up a lot of that on their own.
00:17:50How are you building a feedback loop?
00:17:52So getting, how do you improve the agent over time?
00:17:55How are you getting that?
00:17:56You guys are building UI.
00:17:57So like the SDR agent, you're getting approvals from the human using it.
00:18:02And then how's that feedback into the agent?
00:18:04Yeah, great question.
00:18:05So, so one of the, one of the first class features in the framework is evals, which I think is kind of the start, right?
00:18:12You, you need to, if you're going to be seriously iterating on an agent inside of your business, you need to understand, you know, what is the current state of the world?
00:18:20And as we start making changes, what is the newer state of the world?
00:18:22So let's open up another window here.
00:18:29So let's say write an eval testing when someone asks about the weather, it responds with New York City.
00:18:45And so, yeah, while this goes, the other thing that I actually want to show you is the, and this is public on our GitHub.
00:18:52If you actually look at our test suite, so, so our, our test suite is built on eval.
00:19:05So the entire e-framework is tested against our, our own set of evals that, that we run.
00:19:10And so if we were to look at these, we have, you know, a ton of like primitive ones, things like testing sub agents and human in the loop and things like that.
00:19:16Um, but the, uh, the idea is you should also be able to go send these evals out to providers like brain trust or any other, any other hotel, hotel provider that, that exists.
00:19:27Uh, so if we pull up one of these, uh, so yeah, this is like a very basic one.
00:19:34Um, and then if I actually show you what, what, what these, what these look like.
00:19:37So this one is actually wait, let's just see what it wrote.
00:19:46Okay.
00:19:46Yeah.
00:19:46So this, this is, this is our, this is our eval API.
00:19:50Like you, you, you literally get to, you know, just interact with the agent in the same way that you would, um, you know, if you were to go test this on the CLI, right?
00:19:58Like you'd probably make some changes and then go type in prompts and then see what the response is.
00:20:02Right.
00:20:03But, but obviously if you want to automate that, uh, we're basically giving you API to do that.
00:20:06And this is, um, you know, you have deterministic checks, right?
00:20:10So things like literally does it include the word NYC or whatever, but then we also have this concept of, of, uh, LLM as judge.
00:20:17So you can get, um, really advanced evals that are actually, you know, checking semantic meaning, things like that.
00:20:23So, uh, and so, yeah, this is where I would start and, you know, and then from there it's, I think it's obviously you have to maintain these things and keep building on them.
00:20:30But, but yeah, if it, I think evals are critical for, for actually iterate, iterating on this stuff.
00:20:39Um, I have a question about, um, how you use different UI SDKs across different channels and like, how do you present different data viz on those channels?
00:20:50Um, yeah, that's a good question.
00:20:52So, uh, yeah, well, I'm not prepared to show off next yesterday, but next, yes, is like obviously a very first class citizen with Eve.
00:20:58Um, and our other framework teams are also supporting Eve heavily.
00:21:01So, um, maybe we can actually just pull up the docs.
00:21:04Maybe that's actually easier.
00:21:06Uh, but yeah, we're, we're shipping, we're shipping front end tools, things like use Eve agent, for example, is kind of like the primary surface for, for interacting with next.
00:21:14Yes.
00:21:15Um, and I think there's, I wonder what the, do you know, the world cup demo?
00:21:21Uh, demo that the, someone built, I forgot the name.
00:21:24Yeah.
00:21:24Maybe, maybe we'll, we'll have to look it up.
00:21:26But yeah, there's, there's been some really, really cool, like next JS demos, uh, that people have built.
00:21:30And then we also have, um, quite a few of the other frameworks actually supported too.
00:21:35Uh, like.
00:21:39Uh, yeah, so yeah, so yeah, things like Svel, Knox, Next are, are obviously all supported.
00:21:45Yeah, I was just going to ask on that out of the box, um, Slack, uh, behavior.
00:21:50Does, is there controls on what the agent can do or not do in the Slack channel?
00:21:55Or how does, you know, how do you, you, you, you were, you were invoking it directly, but what if there's like a group message?
00:22:02Like, how does it know what to do?
00:22:04Yeah, it's a good question.
00:22:05So, and, and this is always going to be a balance of like what, what the right defaults are.
00:22:08So there's, there's ways to control these things.
00:22:11Like you might decide to disable DMs.
00:22:13You might say that in certain channels, um, only these people can message those.
00:22:18Ultimately that just comes down to code.
00:22:19So, you know, we can, we can limit those types of things.
00:22:22Um, and we could say, uh, let's just say, you know, uh, disable Slack DMs.
00:22:33And if we look at the actual file, oh, okay.
00:22:38Yeah.
00:22:38And so here, here's the real time channel too, by the way, I'm obviously not going to read it, but, um, yeah, I did.
00:22:42It did figure out what the right WebSocket API is and even used it.
00:22:47Um, so yeah, this, this is the, this is the default Slack channel.
00:22:50There's nothing in here.
00:22:51And so you're, you're basically getting things like DMs, mentions, um, and yeah, so there you go.
00:22:56So that, so there is progressive API to go control a lot of these things.
00:23:00So this would be a very simple way to go deep, you know, disable direct messages, but you can imagine like, this is just a function.
00:23:07You could look up, um, you know, you could take the Slack username and look up something in your, in your identity provider and say, you know, maybe they have certain permission to do something or not.
00:23:17Um, is this on, yeah.
00:23:20So the one thing I'll add as well is the channel contract, the, the agent does not have direct access to call Slack out of the box.
00:23:29When you add a Slack channel, the channel contract is essentially a mechanism to define where the agent outputs, how they render essentially in Slack.
00:23:39So there's nothing that the agent won't just go post in a random channel because it doesn't have a Slack tool.
00:23:44It's just, you're defining essentially a deterministic contract with agent events to how they should flow into Slack and vice versa.
00:23:55Um, so I'm curious on, so I see that you guys have connections with like, you can connect to MongoDB and establish and write logic within the tool.
00:24:11But, um, how do you guys handle use cases that aren't deterministic, like, is it possible to handle a use case where it can cross reference multiple connections, but you don't have specific logic written or like specific tools written for those cases?
00:24:27Yeah, this is a really good question.
00:24:29So I will give you my two cents on this and then I'll, I'll kind of tell you like where I think we might end up going.
00:24:34I, I'm of the opinion that, and this was, this was a, um, kind of a guiding principle for Eve very early on.
00:24:42I think the, I think these models are very much intelligent.
00:24:46And I think if you describe what you want, they're only going to get better at following those instructions.
00:24:51Now, with that said, that's not good enough for everyone.
00:24:53Um, I think there is really interesting concepts kind of similar to what you saw with, you know, with, uh, with evals, how like we're, we're doing steps, you know, one at a time.
00:25:02We're looking at this idea of like a workflow where, uh, it kind of mixes running agentic calls with predetermined output.
00:25:10And you could kind of control, you know, what that looks like.
00:25:12I don't have a good example to show you, but, um, something that is built into Eve is this concept of an output schema.
00:25:18So when you, when you talk to the agent, obviously everything I've done right now is we're just getting text responses back.
00:25:24Um, but, uh, we, we ship a TypeScript SDK.
00:25:27We ship a TypeScript SDK and then there's also this concept called like sub agents where you can say, you know, give me temperature number, you know?
00:25:35And so you get more of this deterministic behavior, even though you're running, you know, obviously non, non-deterministic LM.
00:25:41So yeah, there's like little bits and pieces that can give you a bit of determinism back, you know, where you need it.
00:25:47I think workflows would kind of take this to the next level, but I, I'm more of the opinion that you don't necessarily need them.
00:25:53Um, and like, you know, I, we didn't even talk about skills here, but like an obvious thing, just try first.
00:25:59And then obviously eval it is write a skill that says, you know, do this, then this, then this.
00:26:05And I think, especially with these frontier models, like you'd be, you'll be very pleased with, with the results of, of actually just writing a skill in plain English.
00:26:12Hi, so just to preface, I haven't actually set up Eve yet or like cloud tags, but from what I'm seeing and from what I'm reading,
00:26:23I think the similarities are that you guys both integrate, uh, your agents with Slack and other third parties.
00:26:29So what are some of the differences?
00:26:31Okay. So the biggest, yeah, the, the, the biggest difference, um, I would think of tag today as like a single binary.
00:26:39It's effectively the same for everyone you're deploying tag one thing into your Slack workspace.
00:26:44And their, their models, they are, um, they're doing a much heavier, like self evolution, like memory type of story where they're kind of taking in and saving memories that you guys are asking inside your channel.
00:26:57Um, and then that's ultimately, you know, feeding their feedback loop, right?
00:27:01Uh, Eve would be able to do those things and we have all the APIs to go make those things, but Eve is code first.
00:27:09Like you or does it like Eve is very much about building the agent for your business.
00:27:14Um, and you should be able to build tag on Eve, if that makes sense.
00:27:19And we have all the necessary APIs to do that.
00:27:21So, um, everything, everything you kind of seen here has been like more or less like single player, but, uh, there's a ton of multi tenant APIs inside of Eve as well.
00:27:32Uh, so if we were to look at, um, we should have a whole section on this.
00:27:39Yeah.
00:27:40So I actually, I literally have a guide here called multi tenant memory.
00:27:44And this again is like a very advanced concept, but, um, this is going to let you do things like actually define skills per invoking user or per user, right?
00:27:52You know, you could have, you know, hundreds of thousands of users each with their own skills.
00:27:55If you can save those in a DB and evil kind of give you the different ways to, you know, to go query those things and update them.
00:28:01So, so yeah, like I, and I would not be shocked if we, if we do an open source tag on Eve would be my guess.
00:28:08Hi, um, what's your philosophy on message persistence, particularly when different channels might have different expectations on who owns that?
00:28:20Yeah, great question.
00:28:21So right now we actually like, we're not exposing a storage adapter at all.
00:28:26Um, so if you like our persistence engine is, is workflows is what we're using under the hood.
00:28:32So our, our workflow SDK, um, this is like a hot concept.
00:28:36And like a lot of people are going to want to save their messages.
00:28:39Um, Eve on its own has this concept of sessions and streams.
00:28:44And so, uh, there is nothing stopping me from opening up, um, these sessions on a website and, and resuming and just immediately starting to talk to it.
00:28:54Um, I would show you how the, I, I, yeah, I can't pull up the Vercel internal Slack, but that's exactly what we do.
00:28:59So, so our data agent, for example, um, 90% of the invocations are in Slack and we append a little open in web button and you can immediately just go resume the sessions in web too.
00:29:10So yeah, the, the sessions themselves are channel agnostic and the channels can kind of decide, you know, what gets presented where, but ultimately, uh, any, any channel could resume any other session.
00:29:21Uh, as long as you have, you know, what we call this continuation token, again, pretty lower level concept, but yeah, if you know what that token is, you can, you can basically work across, across surface areas.
00:29:34Hey, uh, uh, I'm wondering like how extensible is like, I guess the harness around, um, Eve itself.
00:29:41So like, uh, can I make my own primitives?
00:29:44Um, and, uh, like, yeah, so, or if I want like specific things that are custom to me, is that just a folder that I create and with some necessary markdown files and scripts and whatever code that I need?
00:29:57Or like how extensible is that with Eve itself natively, I guess?
00:30:01Yeah.
00:30:02Great, great question.
00:30:03So, um, yeah, we're, we're obviously providing a bunch of harness features for you.
00:30:09So, so there's a bunch of default things, right?
00:30:11Things like read file, write file, web, fetch, web search, glob, grep, all these things.
00:30:16So, uh, all of the default stuff that we give you, you can disable or replace with your own implementation if you wanted to.
00:30:23Um, if you do that again, I would suggest like heavily lean on the evals to make sure it's actually doing what you want.
00:30:28But, but yeah, most of our default harness features you can take advantage of.
00:30:32And then the other thing that we give you is this concept of hooks.
00:30:35So hooks, you can basically plug into most of our harness events, right?
00:30:38So things like compaction or, uh, pre tool calls, post tool calls, things like that.
00:30:43So yeah, I think it's, it is instead of swapping the harness, you probably want to build more so around it.
00:30:52Um, but you, but you could, you could, you could take advantage of most of our harness features and replace them if you want.
00:30:58Um, maybe in the future, we might actually let you fully bring your own harness.
00:31:02Like literally think run, run Eve on top of something like open code or pie.
00:31:06But, um, yeah, for now we're, we're basically kind of owning the harness internally.
00:31:11It's what allows us to do a lot of like these dynamic things and, um, you know, work, work across step boundaries and workflows.
00:31:17And what more of these other things that are pretty hard to do with, uh, these other harnesses that kind of expect to have a long running process all the time.
00:31:24Um, so yeah, maybe the other thing that's not obvious is our harness is fully serverless and stateless, uh, aside from like what we take from, from workflow.
00:31:32Um, and so there's, yeah, it was pretty important to own the harness to be able to accomplish a lot of those goals.
00:31:38Hey, in the back, um, I'm curious how you would suggest adding the ability for the agent to run long running tasks, such as like maybe a code change.
00:31:50Yeah, great question.
00:31:51So those types of things should work out of the box.
00:31:53Um, we, we expect, you know, turns could take many, many hours if, if they had to on, on Eve.
00:32:00And the, the main way that that's accomplished is the way we dispatch functions under the hood.
00:32:04Um, I think we actually do have a good, uh, reference for that.
00:32:10Maybe, maybe not, but yeah, so I'll, I'll try and describe it.
00:32:14But, but basically the, because our harness is completely stateless and we actually don't rely on it.
00:32:20We actually don't rely on a single server kind of running the harness all the time.
00:32:24We can basically dispatch at any point in the turn to another serverless function and pick off, pick up right where, where we left off.
00:32:31Um, so you might be familiar with like, you know, the 15 minute timeout, um, on, on serverless functions.
00:32:37And, you know, it's certainly reasonable that, uh, something would take longer than 15 minutes.
00:32:41And so what we can do is every time a tool call is made, we can actually just swap you over to a new function.
00:32:46Um, and so all those types of things are kind of happening, uh, on Vercel by default.
00:32:50It's a little bit different in the self hosting story, but yeah, on Vercel, we're, we're very much going out of our way to make sure that these, that these things can run for a very long amount of time and you don't have to think about it.
00:33:00Hey, quick question. Um, how do you use, um, browser use with, um, Eve or computer use?
00:33:10Yeah, we don't at all today. I think there, there's probably an interesting concept there.
00:33:14The easiest thing is just, you could literally, you know, pick your favorite provider and write, you know, the necessary tool calls to go interact with it.
00:33:21Um, you know, you could probably get something working with Vercel sandbox as well to do it. Yeah.
00:33:26Yeah. So the, the only building stuff we have is web fetch and web search, but I think it'd be pretty reasonable to, to, to plug into another provider for, you know, for like a full, full like browser use experience.
00:33:40Ooh. All right. That's risky.
00:33:49All right. So we'll see what it does here. Yeah. So this, this will kind of be our intro to, to sandboxes. So, um, yeah, the other thing.
00:33:55Yeah. That we didn't cover yet is every single Vercel or Eve agent has a sandbox by default on my computer.
00:34:01It's using Docker on Vercel. It's obviously using Vercel sandbox.
00:34:04Um, and this is kind of like the backbone to a lot of these capabilities, right?
00:34:08That's able to, you know, grep for files, save things, you know, stuff like that.
00:34:11So, um, hopefully what it's going to do here is add a sandbox dot TS file.
00:34:17Uh, what do we want to do? I don't know.
00:34:21And we'll take another question while this is gone. We'll see what happens here.
00:34:33Um, I'm curious about like a general UI, um, in terms of extensibility with like,
00:34:38AI loves JSON. So if you use like a Vercel JSON render where you have a catalog component system,
00:34:43is that something that, um, we're looking to do for the future where you can just have a connector,
00:34:49maybe bind it to a button that a general UI could assemble together?
00:34:53Yeah. I want to, I really want to find this world cup example.
00:34:56Cause that's exactly what they did. Um, is this it?
00:35:06Let's see.
00:35:10Yeah. So let's see what this says. So this, this, yeah, somebody on X just built this on Eve.
00:35:15Um, and I think, yeah, so you could see like beautifully like rendered stuff.
00:35:18That's coming just from the Eve stream. I have no idea how they did this, but it looks,
00:35:22it looks great.
00:35:23Know that.
00:35:24Um, so in my mind now there's two ways to go about creating agents in the Vercel ecosystem
00:35:41through the AI SDK and now through Eve. Um, is there a preferred approach with using one over the other?
00:35:47Yeah, really good question. So Eve is, is a layer on top of AI SDK, but like we, we use it heavily.
00:35:54So it really just comes down to, um, like, do you want to go build durable agents and, uh, build your own harness
00:36:02and these types of things? And you might, the answer might be yes.
00:36:04So that that's really what Eve is doing is we're kind of taking, you know, the low level primitives of AI SDK.
00:36:09And we're building a lot of like the really hard stuff on top of it, just so you don't have to think about it.
00:36:14Um, but yeah, you know, you might, you, you might not like the, the authoring experience of Eve.
00:36:18If you don't want declarative file system agents and you want some different model, then yeah, reaching for AI SDK makes perfect sense.
00:36:24We work with that team very, very closely. So, um, you know, a lot of stuff that they did in V7, you know, that same day was all available in Eve as well.
00:36:33And so, yeah, we'll, we'll, we'll, we'll definitely continue doing that.
00:36:35Does it fully support VDR?
00:36:37What's that?
00:36:38Does it fully support VDR?
00:36:39What?
00:36:40Oh, that's an enterprise question. I would need a, that's above my pay grade. I don't know.
00:36:45It just uses our, our infra. So deploying an Eve agent costs nothing again, cause it's serverless, which is really nice.
00:37:00So if you don't use it, you do pay for nothing. Um, but yeah, the, the main, the main price points for Eve are going to be, uh, function CPU, function duration, sandbox, um, usage.
00:37:13And then obviously 90% of the spend is going to be, you know, wherever your tokens come from, either Vercel or bring your own.
00:37:20Uh, but yeah, it kind of, I, I will say Eve uses a lot of Vercel primitives, um, when deployed to Vercel.
00:37:27So you kind of mentioned that Eve is helpful when you're creating like kind of harness for agents.
00:37:37So what I'm wondering on my end as a much less technical person here is where, where do you see use cases where it makes more sense to use something like Eve as compared to like a prebuilt, uh, prebuilt agent harness.
00:37:56Like open claw or Hermes agent.
00:37:59Yeah. For me, it just comes down to like, do you, are you building for your business and like, where, where does your data live and how much control do you need?
00:38:07Right? Like in, in, in these out of the box harnesses, you're not going to be able to do things like look up users and make different decisions on, you know, depending on who they are.
00:38:16And like, so, so Eve is, uh, you can build an entire agent in Markdown, but you cannot every single Markdown file.
00:38:25And Eve can be a typescript file and you can eject and do whatever custom logic you want.
00:38:28So I think like, you know, if, if you're, if you're actually serious about building, you know, for your business and you need the utmost control over what's actually happening and how you connect to things like that's, you know, Eve is kind of the, yeah.
00:38:41Yeah. It's like apples and oranges at that point, right? Like these out of the box harnesses aren't going to give you a way to become programmatic on top of them in the same way that you could on, on something like Eve.
00:38:50Yeah, so I was trying to describe that a bit before, but it's, it's, uh, workflows is the main primitive for that.
00:39:10So that's, what's giving us the ability to, um, have, uh, like good retry semantics.
00:39:16So when things fail, it should be retrying it's how we can dispatch different functions like statelessly.
00:39:21So workflow is, is the, is the durable engine behind it.
00:39:25Uh, and then we're, we're using Vercel's infra to, to, you know, to effectively let it run for an infinite amount of time.
00:39:32Um, but that doesn't show, you know, the self hosting story is a bit different.
00:39:35So, you know, if you were to self host this thing outside of Vercel, there's different things to consider.
00:39:39And we have a bunch of docs on, on how to, how to do that as well.
00:39:44Yeah, I think we're good.
00:39:45All right.

Key Takeaway

Eve provides a code-first, file-system-based framework that turns serverless Vercel infrastructure into durable AI agents with built-in channels, sandboxes, and evaluations.

Highlights

  • Eve uses a declarative, file-system-based architecture where an agent can exist as just an instructions file inside an agent directory.

  • Connecting external data using Open API specifications automatically generates type-safe connections that allow immediate query routing.

  • Human-in-the-loop approvals can be enforced by splitting data store tools into separate query and mutation scripts.

  • Built-in evaluation APIs allow automated testing of agents using both deterministic checks and LLM-as-a-judge patterns.

  • The framework operates completely serverless and stateless, swapping functions across step boundaries to bypass 15-minute execution limits.

Timeline

Initializing an Eve Application and Default Features

  • Running npx init scaffolds a file-system-based agent structure with an instructions file.
  • Connecting through Vercel AI Gateway provides pre-configured tools like web search without manual setup.

Scaffolding an application creates an agent directory where file structure determines behavior. Authentication connects local environments directly to model providers or AI Gateway, creating an operational chat agent immediately.

Deploying Multi-Channel Messaging with Vercel Connect

  • Channels serve as the top-layer interface for user interactions across surfaces like HTTP and Slack.
  • Deployment to Vercel provides built-in observability for tracking tool calls and execution failures.

Connecting a workspace via Vercel Connect enables instant deployment to platforms like Slack. The framework handles interface-specific UI elements such as thinking indicators while sending execution logs directly to Vercel for step-by-step debugging.

Data Integration and Dynamic Instruction Updates

  • Open API specifications generate first-class API connections for data sources like databases and web APIs.
  • Updating instruction files modifies agent personas and capabilities in real time across deployed channels.

Adding an Open API spec generates connection primitives automatically. The underlying harness reads internal package documentation to instruct coding assistants on importing API primitives, linking weather or external databases seamlessly.

Data Stores, Human Approvals, and Multi-Channel Mechanics

  • External data stores integrate by placing Node.js scripts inside the tools folder.
  • Mutations can require explicit human approval before execution, whereas queries run automatically.
  • Vercel Connect handles native platform formatting so agents cannot post arbitrarily without defined contracts.

Custom database interactions use standard Node.js drivers dropped into designated directory paths. Splitting operations into distinct query and mutate tools permits strict control, requiring human intervention before write actions complete.

System Architecture: Evaluations, Harnessing, and Persistence

  • Built-in evaluation suites run deterministic assertions and LLM-as-a-judge tests against agent prompts.
  • The serverless harness bypasses 15-minute function timeouts by hopping across stateless function invocations per tool call.
  • Workflows handle state persistence under the hood, making session state channel-agnostic via continuation tokens.

Testing relies on an evaluation API built directly into the framework using both programmatic string checks and semantic scoring. Execution state persists durably across serverless step boundaries without requiring long-running server instances.

Community Posts

View all posts