How do you build a company harness?
We've built internal agents at LangChain across marketing, sales, and engineering, and they have completely changed how those teams work. They weren't easy to get right. We spent a lot of time solving the problems that come with a multiplayer harness, and every team landed on the same core primitives:
It lives where people already work (for us that's Slack)
It knows who's asking and acts OBO that person for some services and with its own identity for others It has memory, scoped globally and/or at the user level Code runs in a sandbox and can make requests to services which require auth Large % of its runs are scheduled rather than explicitly invoked by someone (ambient agents!!)
LangChain Internal Agents
To ground this discussion, a brief overview of the three main agents we have at LangChain:
GTM Agent: a proactive, always-on agent that assists with GTM activities. Monitors and responds to emails, to new qualified leads, sends daily briefs, can answer questions about accounts, can run outbound motions
OpenSWE: our engineering agent, can work on and draft PRs, but also runs code review over all PRs
Content Studio: our marketing agent, can draft assets (blogs, images, PowerPoints, videos) in our style and with knowledge of our positioning All of these agents are built in the same way. We think this is a general recipe for building company harnesses.
Problem: User Experience
All our agents live where people already work, which for us is Slack. They each have their own Slack apps, and can be DM’d or tagged in a channel. One benefit of working with these agents in channels is that others can see how people use it.
One nice thing we added was the concept of “breaking” out a conversation in Slack. Oftentimes, a great conversation would be happening and you’d want to add in your agent to get their opinion or get them to do something. But if they ran in that thread it would pollute the human conversation and distract. So we added an easy way for agents to “breakout” into their own thread in the channel.
There are some user experiences that are best NOT done in Slack. For example, when reviewing emails GTM Agent wants me to send, it's fine to do that in a one-off way in Slack, but if there is a big backlog it's not a fun experience at all to track those from Slack messages. For experiences like that, we did end up building a custom UI.
