[{"data":1,"prerenderedAt":2179},["ShallowReactive",2],{"site-nav-content":3,"blog:/blog/inner-vs-outer-agent-harness":178,"blog-index-copy":910,"blog:/blog/inner-vs-outer-agent-harness:surround":931,"hiring-banner-content":2148,"site-cta-content":2160},{"header":4,"productNav":9,"nav":42,"footer":61,"askAI":131,"id":162,"title":163,"archived":164,"authors":165,"badge":165,"body":166,"date":165,"definedTerm":165,"department":165,"description":170,"extension":173,"eyebrow":165,"faqHeader":165,"faqs":165,"footerBand":165,"headline":165,"image":165,"industry":165,"jobType":165,"listed":130,"location":165,"navigation":130,"openRoles":165,"pageLayout":165,"path":174,"relatedHeading":165,"seo":175,"series":165,"sitemap":164,"status":165,"stem":176,"subhead":165,"tags":165,"video":165,"whyJoin":165,"workplaceType":165,"__hash__":177},{"productLabel":5,"loginLabel":6,"contactLabel":7,"contactSalesLabel":8},"Product","Log in","Contact","Get started for free",[10,14,18,22,26,30,34,38],{"label":11,"to":12,"description":13},"Overview","/overview","Seven layers. One closed loop.",{"label":15,"to":16,"description":17},"Conflux","/product/conflux","Where your team, workstreams, and agents meet.",{"label":19,"to":20,"description":21},"Agent Teams","/product/agent-teams","Specialist teams - governed from day one.",{"label":23,"to":24,"description":25},"Lifecycle Graph","/product/lifecycle-graph","Intelligence that compounds across every interaction.",{"label":27,"to":28,"description":29},"Company Wiki","/product/wiki","Playbooks and policies where expertise stays.",{"label":31,"to":32,"description":33},"Workstreams","/product/workstreams","From brief to signed-off deliverable on one canvas.",{"label":35,"to":36,"description":37},"Perception Console","/product/perception","Ask your whole business in plain English.",{"label":39,"to":40,"description":41},"Governance","/product/governance","Frontier AI you can actually sign off on.",[43,46,49,52,55,58],{"label":44,"to":45},"Models","/models",{"label":47,"to":48},"Pricing","/pricing",{"label":50,"to":51},"Integrations","/integrations",{"label":53,"to":54},"Security","/security",{"label":56,"to":57},"Partners","/partners",{"label":59,"to":60},"Insights","/blog",{"productHeading":5,"companyHeading":62,"legalHeading":63,"docsLabel":64,"docsUrl":65,"statementLines":66,"copyright":69,"companyLinks":70,"legalLinks":100,"socialLinks":110,"bottomLinks":120},"Company","Legal","Docs","https://docs.gonimbus.ai",[67,68],"Stop training someone else's model.","Control your AI.","© 2026 Nimbus Intelligence, Inc. All rights reserved.",[71,72,73,74,75,78,81,84,87,90,92,95,98],{"label":47,"to":48},{"label":50,"to":51},{"label":53,"to":54},{"label":59,"to":60},{"label":76,"to":77},"Glossary","/glossary",{"label":79,"to":80},"Compare","/compare",{"label":82,"to":83},"Evaluate","/evaluate",{"label":85,"to":86},"Problems","/problems",{"label":88,"to":89},"Use cases","/use-cases",{"label":91,"to":57},"Partner Program",{"label":93,"to":94},"Careers","/careers",{"label":96,"to":97},"System status","/status",{"label":7,"to":99},"/contact",[101,104,107],{"label":102,"to":103},"Terms of Service","/terms",{"label":105,"to":106},"Privacy Policy","/privacy",{"label":108,"to":109},"Compliance","/compliance",[111,114,117],{"label":112,"href":113},"LinkedIn","https://www.linkedin.com/company/gonimbusai/",{"label":115,"href":116},"X","https://x.com/gonimbusai",{"label":118,"href":119},"Instagram","https://www.instagram.com/gonimbus_ai/",[121,123,125,126,127],{"label":122,"to":103},"Terms",{"label":124,"to":106},"Privacy",{"label":108,"to":109},{"label":96,"to":97},{"label":128,"to":129,"external":130},"LLMs.txt","/llms.txt",true,{"text":132,"prompt":133},"Ask AI about Nimbus",{"I'm researching enterprise intelligence platforms and want to know how Nimbus combines perception, collaboration, and autonomous agents to drive strategic decision-making":134,"platforms":136},{" Summarize the highlights from Nimbus's website":135},"https://gonimbus.ai",[137,142,147,152,157],{"name":138,"label":139,"icon":140,"hrefPrefix":141},"chatgpt","ChatGPT","simple-icons:openai","https://chatgpt.com/?prompt=",{"name":143,"label":144,"icon":145,"hrefPrefix":146},"perplexity","Perplexity","mdi:magnify","https://www.perplexity.ai/search/new?q=",{"name":148,"label":149,"icon":150,"hrefPrefix":151},"grok","Grok","simple-icons:x","https://x.com/i/grok?text=",{"name":153,"label":154,"icon":155,"hrefPrefix":156},"claude","Claude","simple-icons:anthropic","https://claude.ai/new?q=",{"name":158,"label":159,"icon":160,"hrefPrefix":161},"google-ai","Google AI","simple-icons:google","https://www.google.com/search?udm=50&aep=11&q=","content/shared/nav.md","Site navigation",false,null,{"type":167,"value":168,"toc":169},"minimark",[],{"title":170,"searchDepth":171,"depth":171,"links":172},"",2,[],"md","/shared/nav",{"title":163,"description":170},"shared/nav","rDEv5cVG6P2l9ATcdQv2n6VOQiSL5ioOutyfvGevcD0",{"id":179,"title":180,"archived":164,"authors":181,"badge":184,"body":186,"date":899,"definedTerm":165,"department":165,"description":900,"extension":173,"eyebrow":165,"faqHeader":165,"faqs":165,"footerBand":165,"headline":165,"image":165,"industry":165,"jobType":165,"listed":164,"location":165,"navigation":130,"openRoles":165,"pageLayout":165,"path":901,"relatedHeading":165,"seo":902,"series":903,"sitemap":130,"status":165,"stem":904,"subhead":165,"tags":905,"video":165,"whyJoin":165,"workplaceType":165,"__hash__":909},"content/blog/inner-vs-outer-agent-harness.md","Inner vs Outer Agent Harness",[182],{"name":183,"to":135},"Nimbus Research",{"label":185},"Explainer",{"type":167,"value":187,"toc":881},[188,209,232,258,274,279,360,383,387,390,393,407,427,430,453,467,471,490,501,512,521,533,544,565,575,591,595,598,608,618,628,632,642,652,661,667,673,686,689,693,698,701,705,712,716,727,731,737,741,747,751,767,771,781,785],[189,190,191,192,196,197,200,201,208],"p",{},"An ",[193,194,195],"strong",{},"inner agent harness"," is the runtime around a model for a developer and a codebase. An ",[193,198,199],{},"outer agent harness"," is the runtime around a model for operators and live business systems. Same equation — ",[202,203,207],"a",{"href":204,"rel":205},"https://docs.langchain.com/oss/python/langchain/agents",[206],"nofollow","Agent = Model + Harness"," — different workspace, different sensors, different stop.",[189,210,211,216,217,221,222,227,228,231],{},[202,212,215],{"href":213,"rel":214},"https://martinfowler.com/articles/harness-engineering.html",[206],"Böckeler"," already uses “outer harness” for the controls ",[218,219,220],"em",{},"users"," add around a coding agent (guides, sensors) as distinct from the vendor’s built-in loop. ",[202,223,226],{"href":224,"rel":225},"https://addyosmani.com/blog/own-the-outer-loop/",[206],"Addy Osmani"," tells engineers to own the outer loop of investigate → implement → verify so accountability does not dissolve into the model. This article borrows those words and draws the cut enterprises actually buy: ",[193,229,230],{},"repo versus company",".",[189,233,234,235,239,240,243,244,239,247,252,253,257],{},"Claude Code, Cursor, and Codex are excellent inner harnesses. They sandboxes, ",[236,237,238],"code",{},"apply_patch",", ",[236,241,242],{},"CLAUDE.md"," / ",[236,245,246],{},"AGENTS.md",[202,248,251],{"href":249,"rel":250},"https://code.claude.com/docs/en/hooks",[206],"hooks",", and tests. Palantir AIP, Salesforce Agentforce, and OS-class products such as Nimbus are outer harnesses: ",[202,254,256],{"href":255},"what-is-an-ai-workstream","workstreams",", connectors, named signers, a decision record. Confusing them is how Legal is asked to “just use Cursor on the Salesforce repo” and how engineering is asked to “approve CRM writes in a coding agent.”",[189,259,260,264,265,269,270,273],{},[202,261,263],{"href":262},"how-to-choose-between-a-coding-harness-and-an-enterprise-harness","How to choose between a coding harness and an enterprise harness"," is the buying version of this page. ",[202,266,268],{"href":267},"how-to-choose-between-a-copilot-and-a-work-os","How to choose between a copilot and a work OS"," is the adjacent cut (personal assistant versus departmental work). Inner/outer is about ",[218,271,272],{},"which loop you are hiring",", not whether the UI looks like chat.",[275,276,278],"h2",{"id":277},"words-youll-hear","Words you’ll hear",[280,281,282,289,295,305,319,329,345],"ul",{},[283,284,285,288],"li",{},[193,286,287],{},"Inner loop (classic SE)."," Edit, build, test on a developer’s machine. Fast. Local. The coding-agent inner harness lives here: shell, files, compiler.",[283,290,291,294],{},[193,292,293],{},"Outer loop (classic SE)."," PR, CI, review, release. Osmani’s “own the outer loop” is this accountability layer for agentic coding. Still software.",[283,296,297,300,301,304],{},[193,298,299],{},"Inner harness (this article)."," Vendor + user controls for a ",[193,302,303],{},"repository workspace",": Claude Code, Cursor, Codex. Eval: tests, Terminal-Bench, SWE-bench.",[283,306,307,310,311,314,315,231],{},[193,308,309],{},"Outer harness (this article)."," Controls for a ",[193,312,313],{},"company workspace",": jobs, systems of record, people who may sign. Eval: quoted write, identity, ledger. An ",[202,316,318],{"href":317},"what-is-an-enterprise-agent-harness","enterprise agent harness",[283,320,321,324,325,231],{},[193,322,323],{},"Guides vs sensors."," Feed-forward markdown versus feedback from tools. Inner: lint and pytest. Outer: schema of a Salesforce payload and a Hard gate. See ",[202,326,328],{"href":327},"what-is-harness-engineering","what is harness engineering",[283,330,331,334,335,340,341,231],{},[193,332,333],{},"CLAUDE.md / AGENTS.md."," Inner guides. ",[202,336,339],{"href":337,"rel":338},"https://claude.com/blog/steering-claude-code-skills-hooks-rules-subagents-and-more",[206],"Anthropic"," is explicit: files are context; hooks are deterministic. A company wiki is the outer analogue of those files — asserted policy, not a repo README. See ",[202,342,344],{"href":343},"what-is-a-company-wiki-for-ai-agents","What is a company wiki for AI agents",[283,346,347,350,351,354,355,359],{},[193,348,349],{},"Write gate."," Inner: hook denies ",[236,352,353],{},"rm"," or force-push. Outer: ",[202,356,358],{"href":357},"what-is-write-back-governance","write-back governance"," — adapter cannot mutate CRM until a named role signs the quote.",[189,361,362,363,366,367,239,369,372,373,376,377,366,379,382],{},"Nimbus is built as an outer harness: ",[202,364,365],{"href":28},"wiki"," instead of only ",[236,368,246],{},[202,370,371],{"href":51},"connectors"," instead of only a local shell, ",[202,374,375],{"href":40},"governance"," instead of only a pre-commit hook, ",[202,378,23],{"href":24},[236,380,381],{},"git log",". Engineering should still run Claude Code. Those products should not share a write path to NetSuite.",[275,384,386],{"id":385},"why-you-should-care","Why you should care",[189,388,389],{},"Demos collapse the cut. Both products answer a question. Both call tools. Both show a transcript. The evaluation is the workspace.",[189,391,392],{},"It affects you if:",[280,394,395,398,401,404],{},[283,396,397],{},"Security asks whether the coding agent’s MCP server can reach production Salesforce",[283,399,400],{},"RevOps wants “an agent” and is shown a SWE-bench slide",[283,402,403],{},"Engineering wants Cursor and is told to wait for the enterprise OS",[283,405,406],{},"You already have both, and they silently write to the same object",[189,408,409,414,415,420,421,426],{},[202,410,413],{"href":411,"rel":412},"https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai",[206],"McKinsey’s 2025 State of AI"," describes agentic systems as an organisational design problem. Inner harnesses scale developer throughput. They do not, by themselves, scale governed operations. ",[202,416,419],{"href":417,"rel":418},"https://hai.stanford.edu/ai-index/2025-ai-index-report",[206],"Stanford HAI’s 2025 AI Index"," maps how fast coding-agent tooling moved. Speed in the repo is not a substitute for ",[202,422,425],{"href":423,"rel":424},"https://eur-lex.europa.eu/eli/reg/2024/1689/oj",[206],"EU AI Act"," oversight on systems that affect customers and money.",[189,428,429],{},"Two failure modes:",[431,432,433,443],"ol",{},[283,434,435,438,439,442],{},[193,436,437],{},"Outer job, inner harness."," A pricing change drafted in Cursor with an MCP Salesforce tool. Tests pass on a fixture. Production Amount changes. ",[236,440,441],{},"git blame"," does not name the signer. You used a repo loop on a company record.",[283,444,445,448,449,452],{},[193,446,447],{},"Inner job, outer harness."," “Rewrite this function” opened as a cross-department ",[202,450,451],{"href":32},"workstream"," with a Critical gate. Engineers will route around it. You used a company loop on a compile.",[189,454,455,460,461,466],{},[202,456,459],{"href":457,"rel":458},"https://www.nist.gov/itl/ai-risk-management-framework",[206],"NIST AI RMF"," Map step: know the context of use. Inner and outer are different contexts. ",[202,462,465],{"href":463,"rel":464},"https://www.iso.org/standard/42001",[206],"ISO/IEC 42001"," wants controls matched to that context. One harness policy for “all AI” is how both jobs get the wrong stop.",[275,468,470],{"id":469},"what-each-harness-actually-owns","What each harness actually owns",[189,472,473,476,477,482,483,486,487,489],{},[193,474,475],{},"Workspace."," Inner: a checkout, often sandboxed. Anthropic’s ",[202,478,481],{"href":479,"rel":480},"https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents",[206],"long-running harness"," keeps progress in git and files because the workspace ",[218,484,485],{},"is"," the filesystem. Outer: a job folder with people, budget, and attached systems — a ",[202,488,451],{"href":255},". Files may appear as artefacts. They are not the system of record.",[189,491,492,495,496,500],{},[193,493,494],{},"Identity."," Inner: the developer’s machine credentials, a repo token, maybe a sandbox role. Outer: org roster, workstream membership, named approver. The model is not the principal. ",[202,497,499],{"href":498},"connector-and-permissions-architecture","Connector and permissions architecture"," is the outer identity plane.",[189,502,503,506,507,511],{},[193,504,505],{},"Tools."," Inner: shell, editor, tests, browser, maybe MCP to docs. Outer: CRM, ERP, warehouse, ticket systems, mail — default read, write as a separate plane. ",[202,508,510],{"href":509},"what-is-model-context-protocol","MCP"," can sit under both. The grant must not.",[189,513,514,517,518,520],{},[193,515,516],{},"Guides."," Inner: ",[236,519,246],{},", skills, directory-local rules. Outer: company wiki, playbooks versioned with the run. Mixing them is useful (engineering conventions in the repo; discount policy in the wiki). Collapsing them is how a style guide becomes “legal approval.”",[189,522,523,526,527,532],{},[193,524,525],{},"Sensors."," Inner: typechecker, unit tests, CI, architecture tests. Böckeler and ",[202,528,531],{"href":529,"rel":530},"https://www.thoughtworks.com/en-us/insights/blog/generative-ai/harness-engineering-agent-feedback-exploring-ai-coding-sensors",[206],"Thoughtworks on sensors",". Outer: payload schema, blast-radius cardinality, maker-checker, exportable ledger. A passing pytest does not mean Opportunity.Stage was authorised.",[189,534,535,538,539,543],{},[193,536,537],{},"Stop."," Inner: tests red, hook exit 2, max steps, human in the IDE. Outer: wait-for-named-signer, missing connector, budget, reject. ",[202,540,542],{"href":541},"what-is-human-in-the-loop-ai","Human-in-the-loop"," in a coding agent is “the developer kept going.” HITL in an outer harness is a first-class step with identity.",[189,545,546,517,549,239,554,559,560,564],{},[193,547,548],{},"Eval.",[202,550,553],{"href":551,"rel":552},"https://www.swebench.com/",[206],"SWE-bench",[202,555,558],{"href":556,"rel":557},"https://arxiv.org/abs/2601.11868",[206],"Terminal-Bench",", your suite. Outer: replay the signer; compare quote to SoR; see ",[202,561,563],{"href":562},"eval-loops-for-enterprise-agent-harnesses","eval loops",". Leaderboard scores are not a SOX control.",[189,566,567,570,571,574],{},[193,568,569],{},"Memory."," Inner: files, commits, session transcripts, memory files the next coding session loads. Outer: wiki + ",[202,572,23],{"href":573},"what-is-a-lifecycle-graph"," so next quarter’s operator can ask why a field changed. Chat logs of a coding session are not institutional memory for RevOps.",[189,576,577,578,581,582,585,586,590],{},"Nimbus’s ",[202,579,580],{"href":20},"agent teams"," sit on the outer side: mandates, required connectors, approval triggers. You can still ",[218,583,584],{},"use"," an inner harness as a bounded tool behind a connector (for example a coding agent that only opens a draft PR). Do not let that inner harness become the orchestrator of record for a CRM write. ",[202,587,589],{"href":588},"multi-agent-ai-architecture","Multi-agent architecture"," says the same thing with specialists: hands are not roles.",[275,592,594],{"id":593},"how-they-should-sit-together","How they should sit together",[189,596,597],{},"Most companies need both. That is not a hedge. It is how software and operations already split.",[189,599,600,603,604,607],{},[193,601,602],{},"Pattern that works."," Engineers use Cursor or Claude Code on application repos. CI remains the merge sensor. Separately, RevOps and Finance run outer-harness jobs on Salesforce and NetSuite. If a coding agent must touch a live business system, it proposes an artefact; the outer harness quotes and gates the write. Two writers to the same object without a single quote is the failure ",[202,605,606],{"href":588},"multi-agent architecture"," already names.",[189,609,610,613,614,231],{},[193,611,612],{},"Pattern that fails."," One MCP mesh with production tokens, used from the IDE and from the chatbot and from the OS. Confused deputy. ",[202,615,617],{"href":616},"mcp-for-enterprise-integrations","MCP for enterprise integrations",[189,619,620,623,624,231],{},[193,621,622],{},"Thoughtworks’ four layers"," — model, builder harness, user harness, organisational harness — map cleanly: Claude Code is builder + user on the inner side; the organisational layer is the outer operating model. Nimbus is one productisation of that outer layer, not the only one. AIP is a programme-shaped outer harness. Agentforce is CRM-anchored. Score scope and time-to-value separately. See ",[202,625,627],{"href":626},"self-service-vs-forward-deployed-ai-platforms","self-service vs forward-deployed",[275,629,631],{"id":630},"a-week-that-uses-both","A week that uses both",[189,633,634,635,637,638,641],{},"Monday an engineer uses Cursor to fix a pricing calculator in the billing service. ",[236,636,246],{}," says no raw SQL in the request path. A hook blocks ",[236,639,640],{},"git push --force",". CI runs the unit suite. The PR is the artefact. CODEOWNERS signs the merge. That is a complete inner story. SWE-bench is relevant only as a vendor quality signal for the coding tool, not as a control.",[189,643,644,645,647,648,651],{},"Tuesday RevOps needs the list price on twenty renewals updated after Legal changed the cap in the playbook. The artefact is Salesforce. The signer is a named RevOps lead. The sensor is: quoted fields, hash, read-back. If Tuesday’s job is opened as a Cursor session with an MCP Salesforce server using a shared integration user, you have imported Monday’s workspace into Tuesday’s system of record. ",[236,646,381],{}," will not name the RevOps lead. ",[202,649,650],{"href":357},"Write-back"," did not fire because the inner harness does not have that interceptor.",[189,653,654,655,657,658,660],{},"Wednesday someone proposes “one agent for everything.” The honest architecture is: Monday’s harness stays. Tuesday’s job runs on an outer harness — in Nimbus, a ",[202,656,451],{"href":32}," with the CRM connector, the wiki revision that contains the new cap, a Hard gate. If the calculator ",[218,659,236],{}," must change as well, the outer job can spawn a bounded inner step that opens a draft PR. Two artefacts, two sensors, one company rule: unsigned SoR writes are impossible from either loop.",[189,662,663,664,231],{},"Thursday Security reviews MCP. The question is not “is MCP approved.” It is “which workspace may this server mutate.” Inner: sandbox and repo. Outer: workstream grant. Same protocol, different identity box. ",[202,665,666],{"href":616},"MCP for enterprise",[189,668,669,670,231],{},"Friday you look at evals. Engineering posts a Terminal-Bench plot for the coding vendor. Finance asks who signed Amount. Those are not competing dashboards. They are different oracles. ",[202,671,672],{"href":562},"Eval loops",[189,674,675,680,681,685],{},[202,676,679],{"href":677,"rel":678},"https://www.thoughtworks.com/insights/articles/operating-system-enterprise-ai",[206],"Thoughtworks"," would call Monday layers 2–3 on a builder harness, Tuesday a delegation question on layer 4, and “one agent” a way to skip layer 4. ",[202,682,684],{"href":224,"rel":683},[206],"Osmani"," would say engineering still owns verify-and-merge on Monday. Neither author is selling Nimbus. Both are describing why the cut exists.",[189,687,688],{},"If you only fund inner harnesses, Tuesday happens in paste and Slack. If you only fund outer harnesses, Monday happens in unsanctioned Cursor anyway. Fund both. Bind writes.",[275,690,692],{"id":691},"questions-people-actually-ask","Questions people actually ask",[694,695,697],"h3",{"id":696},"is-cursor-an-enterprise-harness-if-we-sso-it","Is Cursor an enterprise harness if we SSO it?",[189,699,700],{},"SSO is admin control. It does not quote a NetSuite journal or bind a Finance signer. Cursor can be an inner harness in an enterprise. That is not the same as an outer harness.",[694,702,704],{"id":703},"can-claude-code-hooks-replace-write-back-governance","Can Claude Code hooks replace write-back governance?",[189,706,707,708,711],{},"They can replace ",[218,709,710],{},"some"," inner invariants (dangerous bash). They do not give you a payload in the language of Salesforce, a roster-aware approver, or an exportable operations ledger. Different workspace.",[694,713,715],{"id":714},"should-we-ban-coding-agents-until-the-os-is-live","Should we ban coding agents until the OS is live?",[189,717,718,719,722,723,231],{},"Usually no. Ban unsigned writes to systems of record from ",[218,720,721],{},"any"," agent, inner or outer. Let inner harnesses keep compiling. ",[202,724,726],{"href":725},"how-to-solve-unapproved-crm-writes-from-ai","How to solve unapproved CRM writes from AI",[694,728,730],{"id":729},"where-does-a-copilot-fit","Where does a copilot fit?",[189,732,733,734,231],{},"A copilot is often not a full inner harness — no repo loop, no tests. Personal throughput. Keep it for mail. Do not give it the CRM write token. ",[202,735,736],{"href":267},"Copilot vs work OS",[694,738,740],{"id":739},"is-nimbus-trying-to-replace-claude-code","Is Nimbus trying to replace Claude Code?",[189,742,743,744,746],{},"No. Different workspace. Nimbus is the company loop; Claude Code is the repo loop. ",[202,745,11],{"href":12}," is the product map. This page is the architectural cut.",[694,748,750],{"id":749},"what-should-i-read-next","What should I read next?",[189,752,753,756,757,761,762,766],{},[202,754,755],{"href":317},"What is an enterprise agent harness",". ",[202,758,760],{"href":759},"agent-harness-vs-agent-framework","Agent harness vs agent framework"," if you are assembling rather than hiring. ",[202,763,765],{"href":764},"what-is-an-agent-harness","What is an agent harness"," for the base noun.",[275,768,770],{"id":769},"related-reading","Related reading",[189,772,773,776,777,231],{},[202,774,775],{"href":327},"What is harness engineering"," and ",[202,778,780],{"href":779},"agent-harness-architecture","Agent harness architecture",[275,782,784],{"id":783},"sources","Sources",[280,786,787,793,799,805,812,818,824,830,836,841,847,853,859,864,869,874],{},[283,788,789],{},[202,790,792],{"href":204,"rel":791},[206],"LangChain, Agents",[283,794,795],{},[202,796,798],{"href":213,"rel":797},[206],"Böckeler, Harness engineering for coding agent users",[283,800,801],{},[202,802,804],{"href":224,"rel":803},[206],"Addy Osmani, Own the outer loop",[283,806,807],{},[202,808,811],{"href":809,"rel":810},"https://addyosmani.com/blog/agent-harness-engineering/",[206],"Addy Osmani, Agent harness engineering",[283,813,814],{},[202,815,817],{"href":677,"rel":816},[206],"Thoughtworks, The operating system for enterprise AI",[283,819,820],{},[202,821,823],{"href":479,"rel":822},[206],"Anthropic, Effective harnesses for long-running agents",[283,825,826],{},[202,827,829],{"href":337,"rel":828},[206],"Anthropic, Steering Claude Code",[283,831,832],{},[202,833,835],{"href":249,"rel":834},[206],"Claude Code, Hooks",[283,837,838],{},[202,839,553],{"href":551,"rel":840},[206],[283,842,843],{},[202,844,846],{"href":556,"rel":845},[206],"Terminal-Bench (arXiv:2601.11868)",[283,848,849],{},[202,850,852],{"href":411,"rel":851},[206],"McKinsey, The state of AI in 2025",[283,854,855],{},[202,856,858],{"href":417,"rel":857},[206],"Stanford HAI, 2025 AI Index",[283,860,861],{},[202,862,459],{"href":457,"rel":863},[206],[283,865,866],{},[202,867,465],{"href":463,"rel":868},[206],[283,870,871],{},[202,872,425],{"href":423,"rel":873},[206],[283,875,876],{},[202,877,880],{"href":878,"rel":879},"https://modelcontextprotocol.io/specification/2025-11-25/index",[206],"Model Context Protocol specification",{"title":170,"searchDepth":171,"depth":171,"links":882},[883,884,885,886,887,888,897,898],{"id":277,"depth":171,"text":278},{"id":385,"depth":171,"text":386},{"id":469,"depth":171,"text":470},{"id":593,"depth":171,"text":594},{"id":630,"depth":171,"text":631},{"id":691,"depth":171,"text":692,"children":889},[890,892,893,894,895,896],{"id":696,"depth":891,"text":697},3,{"id":703,"depth":891,"text":704},{"id":714,"depth":891,"text":715},{"id":729,"depth":891,"text":730},{"id":739,"depth":891,"text":740},{"id":749,"depth":891,"text":750},{"id":769,"depth":171,"text":770},{"id":783,"depth":171,"text":784},"2026-08-24","An inner agent harness runs a developer and a repository — CLAUDE.md, hooks, tests. An outer harness runs the company — wiki, connectors, write gates, and a ledger. Most enterprises need both.","/blog/inner-vs-outer-agent-harness",{"title":180,"description":900},"explainer","blog/inner-vs-outer-agent-harness",[903,906,907,908],"agent-harness","coding-agents","enterprise-ai","_il0EOS7LGYcsPqRPjgGBR-hd3QC3P9SSGIQjCv3Y0M",{"hero":911,"id":913,"title":914,"archived":164,"authors":165,"badge":165,"body":915,"date":165,"definedTerm":165,"department":165,"description":919,"extension":173,"eyebrow":920,"faqHeader":165,"faqs":165,"footerBand":921,"headline":165,"image":165,"industry":165,"jobType":165,"listed":130,"location":165,"navigation":130,"openRoles":165,"pageLayout":165,"path":60,"relatedHeading":927,"seo":928,"series":165,"sitemap":130,"status":165,"stem":929,"subhead":165,"tags":165,"video":165,"whyJoin":165,"workplaceType":165,"__hash__":930},{"filename":912},"u2221455217_Flat_design_of_a_futuristic_minimalist_landscape__5d589295-cdea-4ea9-a262-be766881accf_1.png","content/blog/index.md","Exploring the future of intelligence.",{"type":167,"value":916,"toc":917},[],{"title":170,"searchDepth":171,"depth":171,"links":918},[],"Deep dives into pre-cognitive intelligence, sentient enterprises, and the evolving landscape of AI-driven business transformation.","Latest Research",{"headline":922,"description":923,"primaryLabel":924,"primaryTo":925,"secondaryLabel":926,"secondaryTo":12},"Stay at the frontier.","Subscribe for product updates and new insights.","Subscribe","/newsletter","Explore the platform","More research",{"title":914,"description":919},"blog/index","BFSWGYO9bcTlaulivKYWyg08_DJHsdGg3OC6g_CG1Hw",[932,1569],{"id":933,"title":934,"archived":164,"authors":935,"badge":937,"body":938,"date":899,"definedTerm":165,"department":165,"description":1563,"extension":173,"eyebrow":165,"faqHeader":165,"faqs":165,"footerBand":165,"headline":165,"image":165,"industry":165,"jobType":165,"listed":164,"location":165,"navigation":130,"openRoles":165,"pageLayout":165,"path":1564,"relatedHeading":165,"seo":1565,"series":903,"sitemap":130,"status":165,"stem":1566,"subhead":165,"tags":1567,"video":165,"whyJoin":165,"workplaceType":165,"__hash__":1568},"content/blog/what-is-an-enterprise-agent-harness.md","What is an Enterprise Agent Harness",[936],{"name":183,"to":135},{"label":185},{"type":167,"value":939,"toc":1544},[940,945,956,971,973,1037,1055,1057,1075,1077,1094,1119,1134,1138,1145,1161,1178,1193,1208,1218,1226,1237,1243,1247,1252,1257,1267,1270,1283,1287,1299,1306,1309,1312,1325,1329,1332,1338,1349,1352,1356,1372,1384,1386,1390,1393,1397,1400,1404,1407,1411,1419,1423,1431,1433,1442,1444,1453,1455],[189,941,191,942,944],{},[193,943,318],{}," is the outer runtime that lets a model work on company jobs: policy it actually loads, connectors with least privilege, a loop that can stop for a named signer, and a record you can query after the people change.",[189,946,947,948,951,952,955],{},"It is still ",[202,949,207],{"href":204,"rel":950},[206],". The workspace is not a git root. The sensor is not only pytest. The stop is not only max steps. ",[202,953,679],{"href":677,"rel":954},[206]," calls the missing piece an organisational harness: identity, ownership, economics, and learning around whatever builder harnesses (Claude Code, Cursor, LangChain graphs) teams already bought. An enterprise agent harness is that layer made operable — whether you assemble it or hire it.",[189,957,958,962,963,967,968,970],{},[202,959,961],{"href":960},"inner-vs-outer-agent-harness","Inner vs outer"," is the cut. This page is the outer object in full. An ",[202,964,966],{"href":965},"what-is-an-enterprise-ai-operating-system","enterprise AI operating system"," is the product category that usually ships it: wiki, ",[202,969,256],{"href":255},", teams, gates, ledger. You can have OS-class products (Nimbus, Palantir AIP, Salesforce Agentforce) and still fail the harness test if writes are a boolean on an API key. You can assemble an enterprise harness in LangGraph and pass the test. The noun is the runtime properties, not the logo.",[275,972,278],{"id":277},[280,974,975,984,990,996,1005,1011,1020,1028],{},[283,976,977,980,981,231],{},[193,978,979],{},"Outer harness."," Company workspace. See ",[202,982,983],{"href":960},"inner vs outer",[283,985,986,989],{},[193,987,988],{},"Organizational harness."," Thoughtworks’ fourth layer after model, builder harness, and user harness. Governance architecture, not another markdown file.",[283,991,992,995],{},[193,993,994],{},"Workstream."," Isolation domain: roster, connectors, budget, finish line. The job folder. Not a chat title.",[283,997,998,1001,1002,231],{},[193,999,1000],{},"Write quoting."," The human sees the change in the language of the live system before sign-off. ",[202,1003,1004],{"href":357},"Write-back governance",[283,1006,1007,1010],{},[193,1008,1009],{},"Fail-closed."," Missing approval, detached grant, or down interceptor means nothing mutates. Fail-open is a faster incident.",[283,1012,1013,1016,1017,231],{},[193,1014,1015],{},"Ledger / Lifecycle Graph."," AI operations events: brief, agents, policy version, signer, payload. Distinct from the warehouse’s business events. See ",[202,1018,1019],{"href":573},"What is a lifecycle graph",[283,1021,1022,1025,1026,231],{},[193,1023,1024],{},"SWE-bench / Terminal-Bench."," Inner evals. Useful for engineering vendors. Not a SOX control. ",[202,1027,672],{"href":562},[283,1029,1030,1033,1034,231],{},[193,1031,1032],{},"Forward-deployed programme."," Vendor engineers for months. AIP at scale. Capability can be real. Time-to-value is staffing. ",[202,1035,1036],{"href":626},"Self-service vs forward-deployed",[189,1038,1039,1040,239,1042,239,1044,239,1046,239,1048,239,1051,1054],{},"Nimbus is one self-service enterprise harness: ",[202,1041,365],{"href":28},[202,1043,256],{"href":32},[202,1045,580],{"href":20},[202,1047,375],{"href":40},[202,1049,1050],{"href":24},"graph",[202,1052,1053],{"href":45},"routing",". Score it as an example of the shape, next to AIP and Agentforce, not as the definition of the category.",[275,1056,386],{"id":385},[189,1058,1059,1062,1063,1065,1066,1069,1070,1074],{},[202,1060,413],{"href":411,"rel":1061},[206]," keeps separating ",[218,1064,584],{}," from ",[218,1067,1068],{},"scale",". Copilots and coding harnesses can produce the first. Enterprise harnesses are how writes to systems of record become the second without becoming ",[202,1071,1073],{"href":1072},"what-is-shadow-ai","shadow AI"," in the CRM.",[189,1076,392],{},[280,1078,1079,1082,1085,1088,1091],{},[283,1080,1081],{},"RevOps, Legal, and Finance must share a job, not a Slack channel of screenshots",[283,1083,1084],{},"Salesforce or NetSuite can change because a model proposed it",[283,1086,1087],{},"last quarter’s pricing chat is unrecoverable",[283,1089,1090],{},"security cannot list the AI actors that may write",[283,1092,1093],{},"the vendor demo is a SWE-bench plot and a “we have MCP”",[189,1095,1096,1097,1102,1103,1108,1109,1114,1115,1118],{},"In 2024 Air Canada was held to a chatbot’s invented policy (",[202,1098,1101],{"href":1099,"rel":1100},"https://www.cbc.ca/news/canada/british-columbia/air-canada-chatbot-lawsuit-1.7116416",[206],"CBC","). That is an outer-harness failure: a commitment left the building without a quote or a signer. ",[202,1104,1107],{"href":1105,"rel":1106},"https://eur-lex.europa.eu/eli/reg/2016/679/oj",[206],"GDPR"," constrains personal data in payloads. ",[202,1110,1113],{"href":1111,"rel":1112},"https://www.sec.gov/about/laws.shtml",[206],"Sarbanes–Oxley"," constrains who may change revenue truth. ",[202,1116,425],{"href":423,"rel":1117},[206]," Article 14 wants people who can interpret, interrupt, and leave a record. A coding-agent hook that formats Python does not satisfy those.",[189,1120,1121,776,1124,1127,1128,1133],{},[202,1122,459],{"href":457,"rel":1123},[206],[202,1125,465],{"href":463,"rel":1126},[206]," assume operational controls, not a slide titled governance. ",[202,1129,1132],{"href":1130,"rel":1131},"https://oecd.ai/en/ai-principles",[206],"OECD AI Principles"," are a board checklist. They do not implement a gate. The harness does.",[275,1135,1137],{"id":1136},"what-enterprise-adds-to-a-harness","What “enterprise” adds to a harness",[189,1139,1140,1141,1144],{},"Start from ",[202,1142,1143],{"href":764},"what a harness contains"," — loop, tools, memory, permissions, feedback, orchestration — and raise the bar.",[189,1146,1147,1150,1151,1153,1154,1157,1158,1160],{},[193,1148,1149],{},"Policy that loads."," Inner harnesses inject ",[236,1152,246],{},". Enterprise harnesses inject asserted company policy for ",[218,1155,1156],{},"this"," job, versioned. A Drive dump is not policy. A ",[202,1159,365],{"href":343}," that agents cite, with the revision on the run, is. If Legal’s discount cap lives only in a PDF nobody attached, the model will invent a number. That is not hallucination as a personality. That is a missing guide.",[189,1162,1163,1166,1167,1170,1171,1173,1174,231],{},[193,1164,1165],{},"Connectors as grants, not a toolbox."," Default read. Write is a separate plane. Least privilege is a workstream property. ",[202,1168,1169],{"href":498},"Connector architecture",". MCP may be the plug; it must inherit the grant. ",[202,1172,617],{"href":616},". A Finance team assigned to a GTM-only stream still must not reach ERP “because it is Finance.” ",[202,1175,1177],{"href":1176},"agent-team-architecture","Agent team architecture",[189,1179,1180,1183,1184,1187,1188,1192],{},[193,1181,1182],{},"A hiring object for operators."," Not a folder of personal GPTs. A mandate, required systems, approval triggers — ",[202,1185,580],{"href":1186},"what-is-multi-agent-ai"," as a roster. ",[202,1189,1191],{"href":1190},"how-to-evaluate-agent-teams-vs-single-agents","How to evaluate agent teams vs single agents",". Nimbus ships functional teams on that roster; AIP and Agentforce have their own packaging. The test is: can an operator inspect the mandate and the required systems before assign.",[189,1194,1195,1198,1199,1202,1203,1207],{},[193,1196,1197],{},"Human wait as a step."," ",[202,1200,1201],{"href":541},"HITL"," is not a kill switch in a dashboard. It is quoted payload, named role, fail-closed adapter. ",[202,1204,1206],{"href":1205},"human-in-the-loop-approval-architecture","HITL approval architecture",". Soft / Hard / Critical matched to blast radius. A six-month zero-reject rate on CRM writes is a finding.",[189,1209,1210,1213,1214,231],{},[193,1211,1212],{},"A ledger of AI operations."," Who briefed, which team, which wiki revision, who signed, what executed. Exportable without the vendor in the room. The warehouse is not this ledger. ",[202,1215,1217],{"href":1216},"how-to-evaluate-ai-audit-and-observability","How to evaluate AI audit and observability",[189,1219,1220,1223,1224,231],{},[193,1221,1222],{},"Evals that match the job."," Did the executed write match the signed quote. Can you replay. Inner leaderboards are a vendor quality signal for coding. They are not the enterprise eval. See ",[202,1225,563],{"href":562},[189,1227,1228,1231,1232,1236],{},[193,1229,1230],{},"Economics of the loop."," Routing compact extract vs frontier judgement. Spend quotes. Seat pricing that includes unlimited flagship is an unengineered cost harness. ",[202,1233,1235],{"href":1234},"what-is-model-routing","Model routing",". Nimbus meters NTUs; copilots meter seats. Different jobs.",[189,1238,1239,1242],{},[193,1240,1241],{},"Self-service vs programme."," If every new connector is a six-month SOW, you have bought a deployment, not a harness operators can tighten. That can still be the right buy for Ontology-scale complexity. It is the wrong buy for a standard Salesforce write this quarter.",[275,1244,1246],{"id":1245},"what-it-is-not","What it is not",[189,1248,1249,1250,231],{},"A coding harness with SSO. ",[202,1251,961],{"href":960},[189,1253,1254,1255,231],{},"A copilot with an admin console. ",[202,1256,736],{"href":267},[189,1258,1259,1260,1263,1264,231],{},"A framework. LangGraph can ",[218,1261,1262],{},"host"," an enterprise harness if you build grants, quotes, and a ledger. Out of the box it hosts a graph. ",[202,1265,1266],{"href":759},"Harness vs framework",[189,1268,1269],{},"“We integrate with Salesforce.” Integration is a slide. A scoped connector plus a blocked unsigned write is a harness.",[189,1271,1272,1273,776,1277,1282],{},"SWE-bench-first marketing. ",[202,1274,339],{"href":1275,"rel":1276},"https://www.anthropic.com/engineering/building-effective-agents",[206],[202,1278,1281],{"href":1279,"rel":1280},"https://www.langchain.com/blog/the-anatomy-of-an-agent-harness",[206],"LangChain"," are writing about coding and general agents. Steal the discipline (stops, artifacts, sensors). Do not steal the benchmark as your control framework.",[275,1284,1286],{"id":1285},"thoughtworks-organisational-harness-in-operator-language","Thoughtworks’ organisational harness, in operator language",[189,1288,1289,1290,1294,1295,1298],{},"The ",[202,1291,1293],{"href":677,"rel":1292},[206],"Thoughtworks OS essay"," (10 July 2026) argues that most AI programmes fail because the organisation never built the operating system around the model: accountability, ownership, measurement, learning. They name four layers. An enterprise agent harness, as this article uses the term, is layers 3–4 made runnable for ",[218,1296,1297],{},"company jobs"," — not only for coding-agent users.",[189,1300,1301,1302,1305],{},"Delegation failures are the tell. The model was fine. The platform ran. Practitioner guides existed. The agent did what it was ",[218,1303,1304],{},"allowed"," to do. The company still took harm. Layer 4 questions: who approved that autonomy, who owns the policy, what was the escalation, how do we prevent the same miss on another team. Layers 1–3 cannot answer those. A chat product cannot either.",[189,1307,1308],{},"Thoughtworks’ control matrix is worth stealing even if you never hire them. Use deterministic controls where the boundary is knowable: allowed actions, residency, spend ceilings, blast-radius limits. Use probabilistic controls only where judgement is required. Pair every guide with a sensor. Temporal constraints — consistency across a multi-step workflow, not a single dropdown — are the ones they say teams miss most. A scheduling agent that is locally plausible on each step and globally inconsistent is not a “hallucination.” It is a missing temporal sensor.",[189,1310,1311],{},"Their public examples (Parloa’s repo-resident rules/skills/commands; Morgan Stanley’s tiered autonomy on CVE triage) are coding-adjacent. Translate them: discount policy as a versioned wiki skill; “what delegation tier does this CRM write require?” instead of “do we trust the agent.” Nimbus’s Soft / Hard / Critical is that tiering in product form. AIP will have a different packaging. The architectural claim is the same.",[189,1313,1314,776,1319,1324],{},[202,1315,1318],{"href":1316,"rel":1317},"https://www.databricks.com/blog/ai-harness",[206],"Databricks",[202,1320,1323],{"href":1321,"rel":1322},"https://en.wikipedia.org/wiki/Agent_harness",[206],"Wikipedia"," describe the runtime. Thoughtworks describe why a runtime without ownership still fails at scale. You need both descriptions when you buy.",[275,1326,1328],{"id":1327},"what-good-looks-like-on-a-live-job","What “good” looks like on a live job",[189,1330,1331],{},"A renewal write: workstream isolation; Salesforce attached read-only until write is enabled; wiki revision with the cap cited on the run; team cannot start if Legal’s connector requirement is missing; model proposes a quote; Hard gate; reject leaves Stage unchanged; export shows signer without a vendor screen-share. That is an enterprise harness. A demo that only answers “what should we do about Acme” is a copilot with a logo.",[189,1333,1334,1335,231],{},"Spend an hour asking where each Thoughtworks layer lives in the vendor’s product. If layer 4 is “our professional services team,” you are buying a programme. That can be the right buy. Name it. ",[202,1336,1337],{"href":626},"Self-service vs FDE",[189,1339,1340,1341,1344,1345,1348],{},"Operators already know the human version of this harness. Maker-checker on journals. Segregation of duties on payments. Change-advisory on production. The enterprise agent harness is those instincts encoded so a model cannot talk through them. ",[202,1342,1113],{"href":1111,"rel":1343},[206]," did not wait for LLMs; it waited for a named signer. ",[202,1346,1107],{"href":1105,"rel":1347},[206]," did not wait for MCP; it waits for purpose limitation on the payload. If your AI programme cannot point to the interceptor that enforces those, you have a chatbot with a risk register.",[189,1350,1351],{},"What failure looks like in the first ninety days: every department clones a GPT with the same Salesforce key; Legal’s cap lives in a slide; the only eval is “the demo was impressive”; coding-agent MCP is pointed at production “just for a spike”; the ledger is Slack. What success looks like: one roster of teams, workstream isolation, default read, a Hard refuse on the first PoV, a wiki revision on the graph, inner harnesses still compiling in repos. Nimbus is built to make the success path a product week rather than a services year. Verify that claim with the refuse. AIP may be the right path when Ontology-scale complexity is real — then the harness is a programme, and you should staff it as one.",[275,1353,1355],{"id":1354},"how-this-shows-up-in-nimbus","How this shows up in Nimbus",[189,1357,1358,1359,1361,1362,1365,1366,1368,1369,1371],{},"Nimbus’s outer loop is: brief a ",[202,1360,451],{"href":32}," → assign a ",[202,1363,1364],{"href":20},"team"," whose connector contract is satisfied → retrieve under scope → draft on the canvas (Conflux) → quote writes → ",[202,1367,375],{"href":40}," pause → execute the signed payload → commit to the ",[202,1370,23],{"href":24},". Perception orients; it does not silently write. Routing picks model class per step.",[189,1373,1374,1375,776,1379,1383],{},"That mapping is how we productised harness engineering for operators. It is not a claim that AIP or Agentforce are “not harnesses.” They are different time and scope. ",[202,1376,1378],{"href":1377},"how-to-evaluate-an-enterprise-ai-operating-system","How to evaluate an enterprise AI OS",[202,1380,1382],{"href":1381},"how-to-evaluate-an-agent-harness","how to evaluate an agent harness"," are the two sheets; use both.",[275,1385,692],{"id":691},[694,1387,1389],{"id":1388},"do-we-need-this-if-we-already-have-claude-code","Do we need this if we already have Claude Code?",[189,1391,1392],{},"You need it for jobs whose workspace is the company. Keep Claude Code for repos. Do not share production SoR write tokens into the inner harness.",[694,1394,1396],{"id":1395},"is-palantir-aip-an-enterprise-harness","Is Palantir AIP an enterprise harness?",[189,1398,1399],{},"It can be, as a programme-shaped outer runtime. Ask deployment time, who sets a gate without vendor engineers, and whether the ledger is yours. Category yes; evaluation still required.",[694,1401,1403],{"id":1402},"is-agentforce-enough","Is Agentforce enough?",[189,1405,1406],{},"If the job is CRM-anchored and stays there, maybe. Cross-system jobs with Legal on the canvas usually need a harness that is not only Salesforce. Clear scopes; avoid two writers.",[694,1408,1410],{"id":1409},"can-we-build-this-on-langchain","Can we build this on LangChain?",[189,1412,1413,1414,1418],{},"Yes, with time. You will rebuild grants, quoting, roster, and replay. ",[202,1415,1417],{"href":1416},"build-vs-buy-an-enterprise-ai-os","Build vs buy",". Frameworks assemble loops; operators still need a loop they can hire.",[694,1420,1422],{"id":1421},"whats-the-first-proof","What’s the first proof?",[189,1424,1425,1426,1430],{},"A real cross-department write: operator attaches OAuth; unsigned payload blocked; reject leaves SoR unchanged; export shows signer. ",[202,1427,1429],{"href":1428},"how-to-run-an-enterprise-ai-proof-of-value","Proof of value",". A chat demo is not this.",[694,1432,750],{"id":749},[189,1434,1435,756,1438,756,1440,231],{},[202,1436,1437],{"href":1381},"How to evaluate an agent harness",[202,1439,780],{"href":779},[202,1441,775],{"href":327},[275,1443,770],{"id":769},[189,1445,1446,776,1449,231],{},[202,1447,1448],{"href":357},"What is write-back governance",[202,1450,1452],{"href":1451},"rfp-questions-for-enterprise-ai-agents","RFP questions for enterprise AI agents",[275,1454,784],{"id":783},[280,1456,1457,1462,1468,1474,1479,1486,1492,1497,1502,1507,1512,1517,1522,1528,1534,1539],{},[283,1458,1459],{},[202,1460,792],{"href":204,"rel":1461},[206],[283,1463,1464],{},[202,1465,1467],{"href":1316,"rel":1466},[206],"Databricks, What is an AI agent harness?",[283,1469,1470],{},[202,1471,1473],{"href":1321,"rel":1472},[206],"Wikipedia, Agent harness",[283,1475,1476],{},[202,1477,817],{"href":677,"rel":1478},[206],[283,1480,1481],{},[202,1482,1485],{"href":1483,"rel":1484},"https://www.thoughtworks.com/insights/podcasts/technology-podcasts/scaling-the-enterprise-harness--how-to-achieve-ai-agent-controll",[206],"Thoughtworks, Scaling the enterprise harness",[283,1487,1488],{},[202,1489,1491],{"href":1275,"rel":1490},[206],"Anthropic, Building effective agents",[283,1493,1494],{},[202,1495,852],{"href":411,"rel":1496},[206],[283,1498,1499],{},[202,1500,459],{"href":457,"rel":1501},[206],[283,1503,1504],{},[202,1505,465],{"href":463,"rel":1506},[206],[283,1508,1509],{},[202,1510,1132],{"href":1130,"rel":1511},[206],[283,1513,1514],{},[202,1515,425],{"href":423,"rel":1516},[206],[283,1518,1519],{},[202,1520,1107],{"href":1105,"rel":1521},[206],[283,1523,1524],{},[202,1525,1527],{"href":1111,"rel":1526},[206],"SEC, Sarbanes–Oxley",[283,1529,1530],{},[202,1531,1533],{"href":1099,"rel":1532},[206],"CBC, Air Canada chatbot lawsuit",[283,1535,1536],{},[202,1537,880],{"href":878,"rel":1538},[206],[283,1540,1541],{},[202,1542,553],{"href":551,"rel":1543},[206],{"title":170,"searchDepth":171,"depth":171,"links":1545},[1546,1547,1548,1549,1550,1551,1552,1553,1561,1562],{"id":277,"depth":171,"text":278},{"id":385,"depth":171,"text":386},{"id":1136,"depth":171,"text":1137},{"id":1245,"depth":171,"text":1246},{"id":1285,"depth":171,"text":1286},{"id":1327,"depth":171,"text":1328},{"id":1354,"depth":171,"text":1355},{"id":691,"depth":171,"text":692,"children":1554},[1555,1556,1557,1558,1559,1560],{"id":1388,"depth":891,"text":1389},{"id":1395,"depth":891,"text":1396},{"id":1402,"depth":891,"text":1403},{"id":1409,"depth":891,"text":1410},{"id":1421,"depth":891,"text":1422},{"id":749,"depth":891,"text":750},{"id":769,"depth":171,"text":770},{"id":783,"depth":171,"text":784},"An enterprise agent harness is the outer runtime for operators: wiki, scoped connectors, agent teams, write gates, and a ledger — not a SWE-bench score and not a chat with every production login.","/blog/what-is-an-enterprise-agent-harness",{"title":934,"description":1563},"blog/what-is-an-enterprise-agent-harness",[903,906,908,375],"VCI6uaS6V4vGana_omswQGrFpUW2iH4qg59Oz11-AgA",{"id":1570,"title":1571,"archived":164,"authors":1572,"badge":1574,"body":1575,"date":899,"definedTerm":165,"department":165,"description":2140,"extension":173,"eyebrow":165,"faqHeader":165,"faqs":165,"footerBand":165,"headline":165,"image":165,"industry":165,"jobType":165,"listed":164,"location":165,"navigation":130,"openRoles":165,"pageLayout":165,"path":2141,"relatedHeading":165,"seo":2142,"series":903,"sitemap":130,"status":165,"stem":2143,"subhead":165,"tags":2144,"video":165,"whyJoin":165,"workplaceType":165,"__hash__":2147},"content/blog/agent-harness-vs-agent-framework.md","Agent Harness vs Agent Framework",[1573],{"name":183,"to":135},{"label":185},{"type":167,"value":1576,"toc":2123},[1577,1587,1617,1634,1637,1639,1691,1703,1705,1713,1715,1729,1745,1751,1755,1761,1775,1793,1806,1811,1819,1830,1844,1851,1855,1883,1889,1893,1903,1915,1921,1927,1937,1953,1960,1965,1968,1974,1976,1980,1987,1991,1998,2002,2005,2009,2012,2016,2022,2026,2034,2036,2044,2046],[189,1578,191,1579,1582,1583,1586],{},[193,1580,1581],{},"agent framework"," is a library for composing models, tools, and control flow. An ",[193,1584,1585],{},"agent harness"," is the running environment around a model: the loop, the tools as they are actually granted, the stops, the sensors, and the identity that production will use.",[189,1588,1589,1593,1594,1198,1597,1600,1601,1606,1607,1612,1613,1616],{},[202,1590,1592],{"href":204,"rel":1591},[206],"LangChain’s own docs"," are careful with the words. ",[193,1595,1596],{},"Agent = Model + Harness.",[236,1598,1599],{},"create_agent"," is “a highly configurable harness.” ",[202,1602,1605],{"href":1603,"rel":1604},"https://github.com/langchain-ai/deepagents",[206],"Deep Agents"," is “the batteries-included agent harness.” ",[202,1608,1611],{"href":1609,"rel":1610},"https://docs.langchain.com/oss/python/langgraph/overview",[206],"LangGraph"," is the low-level orchestration framework when the built-in loop is the wrong shape. That taxonomy is the whole article: a framework can ",[218,1614,1615],{},"implement"," a harness. Shipping the pip package does not mean you have one operators can hire.",[189,1618,1619,1624,1625,1627,1628,1630,1631,1633],{},[202,1620,1623],{"href":1621,"rel":1622},"https://www.langchain.com/blog/how-to-build-a-custom-agent-harness",[206],"LangChain’s custom-harness post"," says the same from the other side. Pre-assembled harnesses (Deep Agents, Claude Agent SDK) get you to a working agent fast. ",[236,1626,1599],{}," is minimal on purpose: core loop plus middleware. You still choose tools, guardrails, and business logic. CrewAI, Semantic Kernel, AutoGen, and Pydantic AI live in this neighbourhood. They are how engineers assemble loops. They are not a substitute for ",[202,1629,358],{"href":357},", a ",[202,1632,451],{"href":255},", or a ledger.",[189,1635,1636],{},"Claude Code and Cursor are harnesses you run, not frameworks you import. Nimbus, Palantir AIP, and Agentforce are (different) harnesses you run for company jobs. Confusing “we use LangGraph” with “we have an enterprise harness” is the 2026 version of “we use Kubernetes” meaning “we have a product.”",[275,1638,278],{"id":277},[280,1640,1641,1647,1659,1669,1675,1681],{},[283,1642,1643,1646],{},[193,1644,1645],{},"Framework."," SDKs and graphs: LangChain, LangGraph, CrewAI, AutoGen, Semantic Kernel, Pydantic AI. You write code. You own production identity unless you add it.",[283,1648,1649,1652,1653,1655,1656,1658],{},[193,1650,1651],{},"Harness."," Runtime around the model. ",[202,1654,765],{"href":764},". May be a product (Claude Code) or a configured framework (your ",[236,1657,1599],{}," plus hooks plus IdP).",[283,1660,1661,1664,1665,231],{},[193,1662,1663],{},"Middleware / hooks."," Framework primitive that becomes harness behaviour when it always runs. LangChain middleware; ",[202,1666,1668],{"href":249,"rel":1667},[206],"Claude Code hooks",[283,1670,1671,1674],{},[193,1672,1673],{},"Batteries-included harness."," Deep Agents, Claude Agent SDK, Codex SDK. Opinionated loop, filesystem, subagents, compaction. Still not your CRM grant model.",[283,1676,1677,1680],{},[193,1678,1679],{},"Orchestration framework."," LangGraph when you need deterministic nodes mixed with agentic ones. Powerful. Easy to put the orchestrator in a system prompt and call it done.",[283,1682,1683,1686,1687,1690],{},[193,1684,1685],{},"MCP."," Plug. ",[202,1688,1689],{"href":509},"What is Model Context Protocol",". Works behind frameworks and products. Does not choose the framework/harness cut.",[189,1692,1693,1694,1697,1698,1700,1701,231],{},"In Nimbus you do not import a graph to start a job. You assign an ",[202,1695,1696],{"href":20},"agent team"," on a ",[202,1699,451],{"href":32},". Under the hood there is still a loop, tools, and stops — a harness. The product choice is whether operators must be graph authors. ",[202,1702,1036],{"href":626},[275,1704,386],{"id":385},[189,1706,1707,1708,1712],{},"Engineers will prefer frameworks. They should. Control, portability, tests in CI. Operators and Legal will prefer a harness they can inspect without a pull request. ",[202,1709,1711],{"href":411,"rel":1710},[206],"McKinsey"," keeps showing isolated technical use without operating-model change. A beautiful LangGraph in a platform team’s repo is still isolated use if RevOps cannot attach Salesforce or refuse a write.",[189,1714,392],{},[280,1716,1717,1720,1723,1726],{},[283,1718,1719],{},"the RFP says “must support LangChain” as if that were a control",[283,1721,1722],{},"a vendor says “model-agnostic framework” and prices seats on one flagship",[283,1724,1725],{},"you are asked to rebuild quoting and SoD because “we already have agents in Python”",[283,1727,1728],{},"security reviews the GitHub org and never reviews who can call PATCH",[189,1730,1731,1736,1737,1740,1741,1744],{},[202,1732,1735],{"href":1733,"rel":1734},"https://genai.owasp.org/llm-top-10/",[206],"OWASP’s LLM Top 10"," excessive agency shows up in both: a framework that exposes every tool by default, or a product that does. The cut is not safety vs convenience. It is ",[218,1738,1739],{},"who can change the harness when it fails"," — ",[202,1742,1743],{"href":327},"harness engineering"," — and whether a fail-closed write exists.",[189,1746,1747,1750],{},[202,1748,459],{"href":457,"rel":1749},[206]," Map/Measure need a system boundary. “Our framework” is not a boundary. A named runtime with grants and logs is.",[275,1752,1754],{"id":1753},"the-practical-differences","The practical differences",[189,1756,1757,1760],{},[193,1758,1759],{},"Who authors the loop."," Framework: software engineers. Product harness: operators (and maybe SE for custom tools). If only engineers can add a sensor, you will wait on a sprint for a Legal rule.",[189,1762,1763,1766,1767,1770,1771,1774],{},[193,1764,1765],{},"Where identity lives."," Framework default: service account in ",[236,1768,1769],{},".env",". Product harness: org roster, workstream membership, OAuth grants. You ",[218,1772,1773],{},"can"," do the latter in LangGraph. You must build it.",[189,1776,1777,1780,1781,776,1785,1788,1789,1792],{},[193,1778,1779],{},"What “done” means."," Framework: your node returned. Inner product harness: tests / hook. Outer product harness: signer. Anthropic’s ",[202,1782,1784],{"href":1275,"rel":1783},[206],"effective agents",[202,1786,481],{"href":479,"rel":1787},[206]," notes are about encoding done in the ",[218,1790,1791],{},"environment",". Frameworks give you the primitives; they do not know your done.",[189,1794,1795,1798,1799,1802,1803,1805],{},[193,1796,1797],{},"Portability."," Frameworks win on model swap ",[218,1800,1801],{},"if"," tools and middleware stay. Product harnesses win if they actually route and do not bury a flagship default in a seat. ",[202,1804,1235],{"href":1234},". “We wrap LangChain” is not routing.",[189,1807,1808,1810],{},[193,1809,548],{}," Frameworks shine in unit tests of nodes. Inner harnesses shine on SWE-bench / Terminal-Bench. Enterprise harnesses shine when quote hash equals SoR row. Different CI.",[189,1812,1813,1816,1817,231],{},[193,1814,1815],{},"Time-to-first-governed-write."," Framework: months unless you already built the interceptor. Forward-deployed OS: months of people. Self-service outer harness: the product’s week-one claim — verify it. ",[202,1818,1429],{"href":1428},[189,1820,1821,1824,1825,1829],{},[193,1822,1823],{},"Lock-in."," Framework lock-in is code and patterns. Product lock-in is data, graph, and operating habits. Both are real. ",[202,1826,1828],{"href":1827},"how-to-solve-model-lock-in","How to solve model lock-in"," is the model slice; harness lock-in is the loop slice. Prefer quoted payloads and exportable ledgers either way.",[189,1831,1832,1833,1837,1838,1841,1842,231],{},"LangChain is not the villain. Their ",[202,1834,1836],{"href":1279,"rel":1835},[206],"anatomy post"," is one of the clearer public derivations of harness parts. Use it. Then ask whether your ",[218,1839,1840],{},"deployment"," has those parts for the job you are buying — repo or company. ",[202,1843,961],{"href":960},[189,1845,1846,1847,1850],{},"Nimbus’s bet is that most operators should not author LangGraph to update a discount cap. The wiki and the gate should move. Teams that ",[218,1848,1849],{},"should"," author graphs (unique simulation, exotic tools) can still sit behind a connector. Framework inside a harness. Not a framework instead of one.",[275,1852,1854],{"id":1853},"a-decision-rule","A decision rule",[280,1856,1857,1863,1869,1877],{},[283,1858,1859,1862],{},[193,1860,1861],{},"Building a product or a unique workflow in code, with engineers on the hook:"," framework (or SDK harness) plus your own grants and evals.",[283,1864,1865,1868],{},[193,1866,1867],{},"Hiring a loop for a repository:"," inner product harness (Claude Code, Cursor, Codex). Optionally extend with a framework for custom tools.",[283,1870,1871,1198,1874,1876],{},[193,1872,1873],{},"Hiring a loop for CRM/ERP/cross-department work:",[202,1875,318],{"href":317}," / OS-class product. A framework is a build programme.",[283,1878,1879,1882],{},[193,1880,1881],{},"Vendor says “we are a framework and an OS”:"," make them show a failed unsigned write and an operator-attached connector. Words are cheap.",[189,1884,1885,1888],{},[202,1886,1887],{"href":1416},"Build vs buy an enterprise AI OS"," is the longer form of the third bullet.",[275,1890,1892],{"id":1891},"what-each-layer-of-the-stack-is-for","What each layer of the stack is for",[189,1894,1895,1896,1899,1900,1902],{},"LangChain’s own split is the cleanest vendor-native map: use Deep Agents when you want a batteries-included ",[218,1897,1898],{},"harness","; use ",[236,1901,1599],{}," when you want a minimal harness you customise with middleware; drop to LangGraph when the agent loop is the wrong shape and you need deterministic nodes mixed with agentic ones; use LangSmith to trace whatever you built. That is a builder’s menu. It does not decide whether RevOps can refuse a write.",[189,1904,1905,1906,1909,1910,1914],{},"CrewAI is a role-and-task framework. AutoGen is a conversation-of-agents framework. Semantic Kernel is Microsoft’s orchestration SDK. Pydantic AI moved toward a “harness-first” design in 2026 (capabilities as tools + hooks + instructions). None of these are wrong. All of them leave identity, SoR quoting, and operator self-service as ",[218,1907,1908],{},"your"," story unless you add them. ",[202,1911,1913],{"href":1733,"rel":1912},[206],"OWASP"," will still fail you if the first graph you merge attaches every production tool “so the demo looks alive.”",[189,1916,1917,1918,1920],{},"Product harnesses fail the other way: they hide the graph so operators can work, then surprise engineers who wanted to unit-test a node. Demand an escape hatch — export traces, typed payloads, maybe a documented tool SDK — without requiring every discount cap to be a pull request. Nimbus’s bet is that the cap lives in the ",[202,1919,365],{"href":28}," and the interceptor, and that engineers who need a custom simulator put it behind a connector. Framework inside the harness.",[189,1922,1923,1926],{},[202,1924,679],{"href":677,"rel":1925},[206]," would say a company that standardises on LangGraph has invested in layer 2 (builder) and still has to build layers 3–4 (user guides/sensors, organisational ownership). A company that buys only a coding harness has a strong inner layer 2–3 and a missing outer layer 4. A company that buys an OS-class product is hoping layer 3–4 shipped. Verify with a refused write, not with a README.",[189,1928,1929,1932,1933,1936],{},[193,1930,1931],{},"Cost of the wrong cut."," Framework-first for operators: six months of platform work, then shadow copilots anyway. Product-first for a unique research loop: you will fight the product and rebuild the graph in Python by week four. ",[202,1934,1935],{"href":262},"How to choose coding vs enterprise"," plus this page: workspace first, then assemble vs hire.",[189,1938,1939,1942,1943,1945,1946,1948,1949,1952],{},[193,1940,1941],{},"Portability, honestly."," Frameworks make model swap easier ",[218,1944,1801],{}," you used their model interface and did not sprinkle vendor-specific tool formats through application code. Products make operator ratchet easier ",[218,1947,1801],{}," adding a gate is a UI action. Neither gives you portability of ",[218,1950,1951],{},"decisions"," unless the ledger exports. Ask for JSON of the quote and the graph, not a promise of “open.”",[189,1954,1955,1956,1959],{},"Inngest and others have argued that durable execution needs “a harness, not a framework”: retries, state, and recovery as infrastructure. That slogan is directionally right for production. It is incomplete for enterprises. Durable retries of an ",[218,1957,1958],{},"unsigned"," write are a reliable incident. The outer harness adds identity and a stop that retries must not bypass. LangGraph checkpointing is excellent loop infrastructure. It is not a Finance signer.",[189,1961,1962,1963,231],{},"A worked split: the data-science team builds a forecasting graph in LangGraph, evaluates it with their own sensors, exposes it as a tool. RevOps never opens the repo. They brief a workstream, the team calls the forecast tool under read scope, and any CRM write still quotes in the product interceptor. Framework for the specialist. Harness for the company job. Nimbus is the second box; it should consume the first as a connector, not replace the scientists’ graph. ",[202,1964,50],{"href":51},[189,1966,1967],{},"If your platform team’s OKR is “stand up LangChain,” add a second OKR: “unsigned SoR writes are impossible.” The first without the second is a framework programme. The second without any loop is a policy PDF. You need both, in that order of safety.",[189,1969,1970,1971,1973],{},"CrewAI marketing will talk about roles. Roles in a YAML file are not roster identity. If the “legal reviewer” crew member can still call the same Salesforce write tool as the “AE,” you have a framework demo of ",[202,1972,580],{"href":1176}," without the contract. Ask to see the tool belt per role, then ask what happens when you remove the write tool from legal and the model asks for it anyway. The harness answer is refuse. The framework-only answer is often “we’ll prompt it.”",[275,1975,692],{"id":691},[694,1977,1979],{"id":1978},"is-langgraph-a-harness","Is LangGraph a harness?",[189,1981,1982,1983,1986],{},"It is a framework for building one. Your graph ",[218,1984,1985],{},"becomes"," a harness when it owns tool dispatch, bounds, and (for production) identity and sensors. Empty graph ≠ harness.",[694,1988,1990],{"id":1989},"is-claude-code-a-framework","Is Claude Code a framework?",[189,1992,1993,1994,231],{},"No. It is a productised inner harness. The Agent SDK is the embeddable form — closer to HaaS in ",[202,1995,1997],{"href":809,"rel":1996},[206],"Osmani’s sense",[694,1999,2001],{"id":2000},"does-mcp-replace-both","Does MCP replace both?",[189,2003,2004],{},"No. Plumbing. Hosts still need a loop and grants.",[694,2006,2008],{"id":2007},"we-already-standardised-on-crewai","We already standardised on CrewAI.",[189,2010,2011],{},"Keep it for the jobs engineers should own. Do not force RevOps to write crews for a renewal write. Put CrewAI behind a scoped tool if the outer harness needs that specialist.",[694,2013,2015],{"id":2014},"how-do-we-evaluate-a-vendor-who-wraps-langchain","How do we evaluate a vendor who wraps LangChain?",[189,2017,2018,2019,2021],{},"Ignore the wrapper. Run ",[202,2020,1382],{"href":1381},". If they cannot refuse a write, you evaluated a demo of a framework.",[694,2023,2025],{"id":2024},"where-does-nimbus-sit","Where does Nimbus sit?",[189,2027,2028,2029,2031,2032,231],{},"Productised outer harness, not a LangChain distribution. ",[202,2030,11],{"href":12},". You should still allow inner harnesses for code. ",[202,2033,1935],{"href":262},[275,2035,770],{"id":769},[189,2037,2038,776,2040,231],{},[202,2039,775],{"href":327},[202,2041,2043],{"href":2042},"how-to-evaluate-multi-agent-platforms","How to evaluate multi-agent platforms",[275,2045,784],{"id":783},[280,2047,2048,2053,2059,2065,2071,2077,2082,2087,2092,2097,2102,2107,2112,2118],{},[283,2049,2050],{},[202,2051,792],{"href":204,"rel":2052},[206],[283,2054,2055],{},[202,2056,2058],{"href":1621,"rel":2057},[206],"LangChain, How to build a custom agent harness",[283,2060,2061],{},[202,2062,2064],{"href":1279,"rel":2063},[206],"LangChain, The anatomy of an agent harness",[283,2066,2067],{},[202,2068,2070],{"href":1609,"rel":2069},[206],"LangChain, LangGraph overview",[283,2072,2073],{},[202,2074,2076],{"href":1603,"rel":2075},[206],"LangChain Deep Agents",[283,2078,2079],{},[202,2080,817],{"href":677,"rel":2081},[206],[283,2083,2084],{},[202,2085,811],{"href":809,"rel":2086},[206],[283,2088,2089],{},[202,2090,1491],{"href":1275,"rel":2091},[206],[283,2093,2094],{},[202,2095,823],{"href":479,"rel":2096},[206],[283,2098,2099],{},[202,2100,835],{"href":249,"rel":2101},[206],[283,2103,2104],{},[202,2105,852],{"href":411,"rel":2106},[206],[283,2108,2109],{},[202,2110,459],{"href":457,"rel":2111},[206],[283,2113,2114],{},[202,2115,2117],{"href":1733,"rel":2116},[206],"OWASP Top 10 for LLM applications",[283,2119,2120],{},[202,2121,880],{"href":878,"rel":2122},[206],{"title":170,"searchDepth":171,"depth":171,"links":2124},[2125,2126,2127,2128,2129,2130,2138,2139],{"id":277,"depth":171,"text":278},{"id":385,"depth":171,"text":386},{"id":1753,"depth":171,"text":1754},{"id":1853,"depth":171,"text":1854},{"id":1891,"depth":171,"text":1892},{"id":691,"depth":171,"text":692,"children":2131},[2132,2133,2134,2135,2136,2137],{"id":1978,"depth":891,"text":1979},{"id":1989,"depth":891,"text":1990},{"id":2000,"depth":891,"text":2001},{"id":2007,"depth":891,"text":2008},{"id":2014,"depth":891,"text":2015},{"id":2024,"depth":891,"text":2025},{"id":769,"depth":171,"text":770},{"id":783,"depth":171,"text":784},"An agent framework is a library for assembling a loop. An agent harness is the loop you can actually run — tools, stops, identity, and sensors included. LangChain helps you build one; it is not, by itself, one you can hire.","/blog/agent-harness-vs-agent-framework",{"title":1571,"description":2140},"blog/agent-harness-vs-agent-framework",[903,906,2145,2146],"langchain","frameworks","gXCxGnvUDv02K2_Jxwj878jpKQQXGyrZ7s3d5hNjYZA",{"enabled":164,"message":2149,"linkLabel":93,"linkHref":94,"id":2150,"title":2151,"archived":164,"authors":165,"badge":165,"body":2152,"date":165,"definedTerm":165,"department":165,"description":170,"extension":173,"eyebrow":165,"faqHeader":165,"faqs":165,"footerBand":165,"headline":165,"image":165,"industry":165,"jobType":165,"listed":130,"location":165,"navigation":130,"openRoles":165,"pageLayout":165,"path":2156,"relatedHeading":165,"seo":2157,"series":165,"sitemap":164,"status":165,"stem":2158,"subhead":165,"tags":165,"video":165,"whyJoin":165,"workplaceType":165,"__hash__":2159},"We're hiring! Join the team building the Sentient Enterprise.","content/shared/hiring.md","Hiring banner",{"type":167,"value":2153,"toc":2154},[],{"title":170,"searchDepth":171,"depth":171,"links":2155},[],"/shared/hiring",{"title":2151,"description":170},"shared/hiring","1zs3boivKda1e-b-hAyuNcmZSKjZUAXmecnwHVgcHzk",{"fold":2161,"id":2165,"title":2166,"archived":164,"authors":165,"badge":165,"body":2167,"date":165,"definedTerm":165,"department":165,"description":170,"extension":173,"eyebrow":165,"faqHeader":165,"faqs":165,"footerBand":2171,"headline":165,"image":165,"industry":165,"jobType":165,"listed":130,"location":165,"navigation":130,"openRoles":165,"pageLayout":165,"path":2175,"relatedHeading":165,"seo":2176,"series":165,"sitemap":164,"status":165,"stem":2177,"subhead":165,"tags":165,"video":165,"whyJoin":165,"workplaceType":165,"__hash__":2178},{"headline":2162,"description":2163,"primaryLabel":8,"primaryTo":2164,"secondaryLabel":926,"secondaryTo":12},"Run frontier AI your business actually owns.","Governed agent swarms, 2,000+ integrations, and a knowledge graph that stays inside your walls. Free 7-day trial.","/checkout","content/shared/cta.md","Site CTAs",{"type":167,"value":2168,"toc":2169},[],{"title":170,"searchDepth":171,"depth":171,"links":2170},[],{"headline":2172,"description":2173,"primaryLabel":8,"primaryTo":2164,"secondaryLabel":2174,"secondaryTo":99},"See what governed AI looks like on your stack.","Connect your tools, run a workstream, and keep every decision on your ledger - free for 7 days.","Talk to our team","/shared/cta",{"title":2166,"description":170},"shared/cta","wz4AdRHnaYH021WMdWcHnZvHmkZJNKaNG4XGZfnFBtw",1788985847329]