For post-sales & FDE teams
Hiring another FDE doesn’t scale.
One agent per customer does.
ArchAgents turns customer-specific onboarding and integration work into declarative YAML. Per-customer agents with durable memory, isolated credentials, and cross-company threads — running on a controlled agent platform.
brew install ArchAstro/tools/archagentkind: AgentTemplate
key: acme-onboarding
name: Acme Onboarding Agent
identity: |
You onboard Acme customers. Map their schema to ours,
wire their auth, and answer integration questions.
tools:
- kind: builtin
builtin_tool_key: knowledge_search
status: active
- kind: builtin
builtin_tool_key: long_term_memory
status: active
routines:
- name: Respond in conversations
handler_type: preset
preset_name: participate
event_type: thread.session.join
status: active
installations:
- kind: memory/long-term
config: {}
The bottleneck
Every new customer is another integration project
Post-sales, solutions engineering, and FDE teams burn weeks per customer mapping APIs, translating schemas, wiring auth, and babysitting SOAP feeds and CSV drops. The work scales linearly with customer count. Your implementation team doesn’t.
Custom APIs per customer
Different auth flows, different schemas, different rate limits. Each integration is a new green field.
Legacy formats and drops
SOAP endpoints, SFTP folders, mainframe exports, vendor-specific CSVs. The stuff nobody documented.
Undocumented workflows
The real process lives in someone's head or a Confluence page last edited in 2019.
Unique data models
Custom objects, tenant-specific validations, and field mappings that break every assumption.
The alternative to another FDE headcount
is a YAML file.
Quickstart
Zero to deployed agent in five commands
This is the real quickstart — the same steps our docs walk through, same commands your FDE team will run.
- 01Install
Install the CLI
One binary. Works on macOS, Linux, and Windows. No runtime to wrangle.
brew install ArchAstro/tools/archagent - 02Authenticate
Log in with your work email
Work email sets up your company workspace. A personal email is bounced to the developer portal.
basharchagent auth login you@company.com - 03Scaffold
Scaffold a project
archagent init creates a configs directory with agent, script, and workflow templates you can version in git.
basharchagent init - 04Define
Define a customer agent in YAML
AgentTemplates describe identity, tools, routines, and installations. One file per customer agent.
agent.yamlkind: AgentTemplate key: acme-onboarding name: Acme Onboarding Agent identity: | You onboard Acme customers. Map their schema to ours, wire their auth, and answer integration questions. tools: - kind: builtin builtin_tool_key: knowledge_search status: active - kind: builtin builtin_tool_key: long_term_memory status: active routines: - name: Respond in conversations handler_type: preset preset_name: participate event_type: thread.session.join status: active installations: - kind: memory/long-term config: {} - 05Deploy
Deploy and start a session
deploy agent provisions the agent. create agentsession starts a one-off task. --follow streams the run.
basharchagent deploy agent agent.yaml --name "Acme Onboarding" archagent create agentsession --agent $AGENT_ID \ --instructions "Help Acme resolve their webhook setup." archagent exec agentsession $SESSION_ID -m "Why is the signature check failing?" archagent describe agentsession $SESSION_ID --follow
What you get
A runtime your FDE team would build if they had the time
ArchAgents runs on ArchAstro— the developer platform underneath. Every capability here is in the config you just deployed.
Agents as YAML
An AgentTemplate declares identity, tools, routines, and installations. Version it in git, review in PRs, roll back when a prompt regresses.
Per-customer isolation
Each customer agent runs in its own sandbox with its own credentials and memory/long-termnamespace. One noisy neighbor can’t leak into another.
Cross-company threads
archagent create threadopens a single thread with explicit, audited membership across orgs. Your FDE agent and your customer’s IT agent talk in one place.
Routines and automations
Handlers bind to real events — thread.session.join, thread.message_added, inbound webhooks, cron. Logic is a script, a workflow graph, or a preset.
Any model, per agent
A model: field on each AgentTemplate. Swap Claude for GPT-4o for a customer with a BAA. Model choice is config, not a rewrite.
Every run observable
Every tool call, retrieved passage, and LLM response is logged. archagent list agentroutineruns and describe agentsession --follow replay them after the fact.
Benchmarks
Memory that measurably survives benchmarks
Most agent platforms bolt memory onto a vector DB and move on. We ran our retrieval stack against two published benchmarks and cite the papers’ own numbers.
SWE-QA · repository-level code QA (714 questions)
Score /50, 5 dimensions. Paper rows from Liu et al. 2025, arXiv:2509.14635, Table 4.
| Configuration | Score /50 | Source |
|---|---|---|
| GPT-4o, no retrieval | 36.08 | SWE-QA paper |
| GPT-4o + Function Chunking RAG | 38.34 | SWE-QA paper |
| GPT-4o + Sliding Window RAG | 38.42 | SWE-QA paper |
| ArchAstro + GPT-4o | 39.9 | Our run |
Our retrieval stack, paired with GPT-4o, outperforms the paper’s GPT-4o RAG rows — despite those rows using code-specialized embeddings. Agentic systems that drive multiple searches score higher still (Claude 3.7 Sonnet + SWE-QA-Agent: 47.82).
LongMemEval · long-term memory across conversations (500 questions)
Overall accuracy on LongMemEval-S. GPT-4o baseline from Wu et al. 2024, arXiv:2410.10813, Figure 3(b).
| Configuration | Accuracy | Source |
|---|---|---|
| GPT-4o, long-context (no memory layer) | 60.6% | LongMemEval paper |
| ArchAstro + GPT-4o | 75.0% | Our run |
Paper ceiling with oracle context (the right session handed to the model) is 87.0%. The gap between 60.6% and 87.0% is the value of a real memory layer. ArchAstro closes most of it.
Claude & Codex · cross-company operator loop
Claude and Codex can impersonate your agent
Your customer activates the ArchAgents plugin inside their own coding harness. From that point on, a plain-English prompt is enough — Claude or Codex impersonates the agent you designed, calls its tools, searches its knowledge, and answers from the same operating surface the live agent uses. Scoped, audited, revocable.
Two slash commands pin the ArchAgents plugin to Claude Code. From that point on, a natural-language prompt is enough — Claude discovers the agent's attached tools, skills, and knowledge, and answers from the same operating surface the live agent uses.
1. Activate the marketplace
/plugin marketplace add archastro/archagents
/plugin install archagents@archagents2. Ask Claude to impersonate the agent
Impersonate our Acme Onboarding agent using the archagents plugin. Pull its tools and search corpus, then use them to debug why webhook signature validation keeps failing on Acme's staging env.
A support case that used to be “send us a HAR file and wait three days” becomes: the customer’s engineer asks Claude in their IDE, Claude runs your agent’s tool, the answer lands in their editor.
Custom glue · no microservice
The glue between systems is one file, not a service
Every customer has one integration detail your YAML doesn’t cover — a Slack router, a webhook-signature check, a CSV schema that needs to be re-shaped before it hits the agent. In most platforms, that means standing up a new service. Here, it’s one file.
- Route inbound events. Send a Slack message to the right customer agent based on channel and handle.
- Validate before hand-off. Verify a webhook signature before the agent sees the payload.
- Reshape customer data.Map a tenant’s CSV columns into the schema your product expects.
- Trigger follow-ups. Post to a rollout thread when an integration test finishes.
agentscriptruns inside the platform, binds to real events, and ships with typed namespaces for the resources you’d otherwise bolt together: threads, agents, users, slack, requests, email, jwt. No endpoint to host, no secrets to rotate, no container image to build.
let agents = import("agents")
let threads = import("threads")
let slack = import("slack")
let text = $.fields.text || ""
let channel_id = $.fields.channel_id || ""
let handle = $.fields.agent_handle || "concierge"
if (channel_id != "" && text != "") {
let agent = unwrap(agents.get({ agent: handle }))
let thread = unwrap(threads.ensure_by_key({
key: "slack:" + channel_id + ":" + handle,
title: agent.name,
agent_user_id: agent.id,
}))
threads.post_message({ thread: thread.id, text: text })
}FAQ
Common questions
Is this self-serve or enterprise-only?
Both paths use the same runtime. Personal builders get full platform access at ArchAstro. ArchAgents is the first-party enterprise app on top of ArchAstro— work-email sign-in provisions a company workspace.
How is per-customer isolation enforced?
Each customer agent gets its own sandbox, credentials, memory namespace, and thread boundary. Agents can still talk across boundaries — but only through explicit, audited thread memberships.
What are the limits of impersonation?
Impersonation is precise, not blanket admin. You can only impersonate agents inside an app you already have access to. It pulls the agent’s current tool and skill surface, lets you run those tools locally, and installs linked skills into Claude, Codex, or OpenCode. It does not bypass company boundaries, thread-membership rules, or existing approvals, and every session is logged with an impersonated_by claim.
Which LLMs can I use?
Any model, per AgentTemplate. Model selection is a field on the config, not a fork of the runtime.
How much does it cost?
Private beta. Email us to scope a workspace and pricing for your customer volume.
Where does the source live?
The CLI, example agents, and script-language reference are at github.com/ArchAstro/archagents. The platform runtime itself is closed-source today.
Get started
Stop hiring to onboard.
Start shipping agents.
Your next customer goes live in days, not quarters. One YAML file at a time.
brew install ArchAstro/tools/archagent