Applications
elan1 Work
Agentic enterprise automation for ERP and CRM
Systems it changes
- Frappe/ERPNext
- Twenty CRM
- Zoho CRM
- SAP and Salesforce
Developers
govern · session
tool_call → govern agent ap-agent-02 tool erpnext.purchase_invoice.submitdecision: ask_person approver finance-head · approvedgovern verify →Chain intactThe elan1 API and SDKs are designed to send each AI agent tool call through elan1 Govern before it runs. A REST API described in OpenAPI 3.1, TypeScript and Python SDKs and an MCP server return one of 3 answers, allow, ask a person or refuse, and every decision leaves a hash-chained record. Sandbox access is on request.
Get started
Documentation
Full documentation opens at launch, with its own search. Until then, start with the quickstart below or ask for a sandbox.
Route one tool call and read its record.
Ask, check, approve, act, record.
Every endpoint, in OpenAPI 3.1.
Install, configure, propose.
Govern tool calls without changing agent code.
Check a record on your own machine.
The 10 elan1 Run capability contracts.
What changed, and what is running.
Quickstart
Your agent proposes the action. elan1 Govern answers allow, ask a person or refuse, and only what was decided runs.
npm install @elan1/governELAN1_API_KEY from your sandbox.The full quickstart opens with the documentation at launch.
propose.ts
import { Govern } from "@elan1/govern"; const govern = new Govern({ apiKey: process.env.ELAN1_API_KEY }); // 1. Propose the action instead of taking it.const decision = await govern.propose({ agent: "ap-agent-02", tool: "erpnext.purchase_invoice.submit", target: "PINV-2026-00410", params: { supplier: "SUP-0193", amount: 184500, currency: "INR" },}); // 2. One of 3 answers. Unmatched calls are refused.switch (decision.outcome) { case "allow": await decision.execute(); // runs with credentials the agent never sees break; case "ask_person": console.log("Waiting for", decision.approver); break; case "refuse": console.log("Refused:", decision.reason); break;} // 3. Every outcome leaves a record your auditor can verify.console.log(decision.recordId);Point your agent’s MCP configuration at the proxy. The agent’s code does not change.
mcp.json
{ "mcpServers": { "erpnext": { "command": "govern", "args": ["mcp", "proxy", "--upstream", "erpnext", "--rules", "kolam-finance"] } }}Integrations
Applications on top. Govern in the middle. Run underneath.
Applications
Agentic enterprise automation for ERP and CRM
Systems it changes
Applications
Decision intelligence
Where work arrives
Where actions go, through elan1 Govern
Governance
Agent governance and assurance
Agents and frameworks
How calls arrive
Built-in connectors
Runtime
Sovereign agent infrastructure
Capability contracts
Where it runs
Product names belong to their owners and are listed to describe compatibility, not partnership. None of the four platforms is generally available yet; see the claims register.
Reference
42 terms in plain English, from allow and ask a person to hash chain and shadow mode. Each has its own link.
Four specimen records, one per outcome, with all 16 fields. Every value is illustrative.
Status and changelog
Live status and incident history open at launch. Until then, see what is built, designed and planned.
Every API, SDK and contract change, versioned, with what to do about it.
Opens with the documentation at launch.
Sandbox
Sign in to the console to manage keys, write rules and export records. No access yet? Ask for a sandbox and we reply within 2 working days.
An hour with the engineers who build the platform, on your agent, your tools and your rules.
Intelligence you can answer for.