AI superpowers for Frappe/ERPNext, powered by openclaw.
Jarvis lets ERPNext users — especially business owners and execs — ask plain-English questions over their ERP data and get correct, permission-aware answers grounded in the actual records. It pairs an in-bench Frappe app (settings, permission-aware tool layer, HTTP API, on-save credentials propagation) with an openclaw agent runtime hosted per-tenant on Aerele's infrastructure. Data stays on the customer's bench; the agent brain lives in openclaw; permissions inherit from Frappe's own per-user checks.
Status: The end-to-end agent loop + chat UI are live, and the Phase 3 SaaS control plane is built: jarvis_admin (signup, Razorpay billing, fleet orchestration), the per-host jarvis-fleet-agent + Traefik TLS edge, jarvis-openclaw-plugin (the agent calling back into Frappe), and a RO-mounted jarvis-persona. 11 tools (5 read + 6 write), identity via a single X-Jarvis-Session header (Path A v2). Customers connect via Jarvis Cloud (onboarding page); a single-bench dev path also exists. Docs are maintained in the jarvis_admin repo (docs/customer-app/ for this app; docs/production-deploy.md for the operator bring-up) — see Documentation below.
You can install this app using the bench CLI:
cd $PATH_TO_YOUR_BENCH
bench get-app https://github.com/Aerele-RnD/jarvis --branch main
bench install-app jarvis# 1. Install the app on your site
bench --site <your-site> install-app jarvisThen open /app/jarvis-onboarding in Desk → sign up + pay → the control
plane assigns you a managed openclaw container and stores its connection in
Jarvis Settings. Set your LLM provider/model/key in Jarvis Settings, then
chat at /app/jarvis-chat. Full walkthrough: getting-started (see Documentation).
Local single-bench dev (run openclaw yourself, no control plane) → the local-dev guide (see Documentation).
Each in-flight chat turn occupies one background (RQ) worker for the turn's
whole duration, and turns run on the shared long queue by default — so on a
bench with one long worker, multiple conversations (e.g. a batch of File Box
documents) process one at a time, and other long-queue jobs wait behind
them.
To process turns in parallel and isolate them from the rest of the bench,
declare a dedicated jarvis_chat queue in common_site_config.json:
"workers": {
"jarvis_chat": {"timeout": 720, "background_workers": 4}
}then regenerate the process config and reload:
bench setup supervisor && sudo supervisorctl reread && sudo supervisorctl update
# (dev benches without supervisor: bench setup procfile, then restart bench start)- Frappe Cloud: add the same
workersblock through your bench's configuration (dedicated/private benches; contact Frappe Cloud support if the key isn't editable on your plan). If the queue can't be provisioned, nothing breaks — see below. - This is opt-in and self-disabling. Jarvis routes turns to
jarvis_chatonly when the queue is declared and a live worker is listening on it; otherwise every turn uses thelongqueue exactly as before. A declared-but-dead queue therefore never strands chats, and benches that skip this section need no changes. - Chat workers mostly wait on network I/O (they relay the agent's event
stream), so they are cheap: ~100–150 MB RAM each, negligible CPU. Size
background_workersto the number of simultaneous conversations you want. - Escape hatch: set
jarvis_chat_queuein a site'ssite_config.jsonto force a specific queue (e.g."long"to opt one site out).
In production the customer site never runs openclaw — saving Jarvis Settings
POSTs to Aerele's control plane, which provisions/updates the container on the
fleet; the agent calls back into Frappe (call_tool) with per-user identity.
See the architecture guide for the full picture (production vs dev shapes,
identity flow, trust boundaries).
All Jarvis docs are maintained in the jarvis_admin repo (internal), under
jarvis_admin/docs/:
- Customer-app docs (this app) —
jarvis_admin/docs/customer-app/: getting-started, architecture, configuration, tools-api, local-dev, development, decisions. - Operator/platform docs —
jarvis_admin/docs/(start atproduction-deploy.md).
(They lived here under jarvis/docs/ previously; consolidated so all docs are in
one place. See jarvis/docs/README.md for the pointer.)
This app uses pre-commit for code formatting and linting. Please install pre-commit and enable it for this repository:
cd apps/jarvis
pre-commit installPre-commit is configured to use the following tools for checking and formatting your code:
- ruff
- eslint
- prettier
- pyupgrade
See the development guide (jarvis_admin/docs/customer-app/development.md) for the full dev workflow, recipes, and project layout.
MIT