Ship agents into the field in days, not quarters.
ConnectOnion is the agent framework for engineers who deploy on the customer's turf. Plug into their messy systems, see exactly what the agent did, and hand off code you actually own. Three lines to a working agent.
pip install connectonion · works with any LLM · MIT licensed
1from connectonion import Agent23def lookup_order(order_id: str) -> str:4 """Pull an order from the customer's database."""5 return db.query(order_id)67agent = Agent("support", tools=[lookup_order])8agent.input("Where is order #4471?")The framework that survives contact with production.
Forward Deployed Engineers don't need another demo framework. They need something that holds up inside a customer's mess.
Ship in days, not months
A prototype on Monday is in production by Friday. No orchestration graph to learn, no boilerplate to scaffold — a function becomes a tool, a tool becomes an agent.
Built for the field
You don't get a clean lab. You get the customer's database, their auth, their half-documented API. Any Python function is a tool, so the agent talks to whatever is already there.
See exactly what it did
When an agent misbehaves at a client site, you can't shrug. @xray opens up every decision — the task, the iteration, the tools it called — so you debug in minutes, not guesswork.
You own the code
No black box, no platform you can't hand off. It's plain Python you read, fork, and leave behind with the customer. When the engagement ends, they own a real system.
From function to deployed agent, in one file.
The whole loop a Forward Deployed Engineer lives in — build, debug, swap models — without leaving Python.
Write a normal Python function, hand it to an Agent, and call it. No graph, no chains, no config files.
1from connectonion import Agent23def search_tickets(query: str) -> str:4 """Search the customer's helpdesk."""5 return helpdesk.search(query)67def refund(order_id: str, amount: float) -> str:8 """Issue a refund through their billing API."""9 return billing.refund(order_id, amount)1011agent = Agent(12 "support",13 tools=[search_tickets, refund],14)1516agent.input("Refund the duplicate charge on order #4471")Same engagement. One week instead of six.
The cost of a deployment isn't the model — it's everything around it. ConnectOnion deletes the everything.
The usual way
- Week 1–2: scaffold an orchestration framework, fight its abstractions
- Week 3–4: wire each customer system in as a custom integration
- Week 5: agent breaks on-site, no visibility into why
- Hand-off: customer is locked to a platform they can't maintain
With ConnectOnion
- Day 1: wrap their existing functions as tools — agent runs
- Day 2: @xray every decision, fix the edge cases live
- Day 3: swap in the customer's own model, ship to prod
- Hand-off: plain Python they own and can extend themselves
Questions from the field
Your next deployment ships this week.
Install it, point it at the customer's systems, and watch the agent work. Three lines is all it takes to start.