Knows how the business works
A knowledge pack written for it: the job lifecycle, what every automation does and when, what “held” or “stuck” means, who owns which outcome, and which system wins when two disagree. Business knowledge, not source code.
JARVIS
JARVIS gives the people who run the company an assistant of their own, typed or spoken. It knows how the business works, asks the Job Adding System about any job, pulls numbers from every platform, builds the report and drafts the post, the update or the email. Then it waits: nothing changes until the person approves it on screen. Underneath, each person gets a governed server of their own, built so that nothing it does can slow the automations the business runs on.
A morning with JARVIS
Three and a half minutes on the executive profile: a spoken brief, a stuck job explained, a board pack built in one prompt, then a Slack post, six CRM updates, a work board and an email to an outside address, each approved on screen before it goes. It ends on the guardrails. A mock demo: the screens are rendered and every record in them is illustrative.
3 min 33 s · mock demo, illustrative data
Spoken lines only: the typed requests and the answers are on screen in the video.
JARVIS Good morning, Dylan. Everything's running, and JAS is healthy.
Dylan JARVIS, what needs my attention this morning?
JARVIS Three things. Four jobs have been waiting more than ten days on Ausgrid network approval. Overnight, the automations ran clean, except the AroFlo sync, which held two jobs for missing materials. And ops are waiting on your answer about the expo budget, in Slack. Your first meeting is at nine thirty.
Dylan Post in the installs channel. Thank the crews for hitting forty-one installs in October.
JARVIS Here's the draft. It's on screen for your OK.
JARVIS Posted.
Dylan Reply to Ausgrid's email. Thank them, and confirm we'll send the revised diagram by Friday.
JARVIS The draft is on screen. It's going outside the company, so please give it a read.
JARVIS Sent.
Dylan That's all for now. Thanks, JARVIS.
JARVIS Any time, Dylan. I'll be here.
Ask in plain English, by keyboard or by voice
A knowledge pack written for it: the job lifecycle, what every automation does and when, what “held” or “stuck” means, who owns which outcome, and which system wins when two disagree. Business knowledge, not source code.
Any job, end to end, through the same read-only checks the staff console uses: why it is stuck, what ran overnight, what is waiting on whom. The checks it relied on are named in the answer.
It writes and runs report code in a sandbox, against the company’s own integration clients. “An October board pack: signings, installs, revenue and overdue invoices” comes back as a deck, every number pulled from its source.
It posts in Slack, updates the CRM and the work boards, replies to an email or files a document, always as the person who asked. Each change is held until they approve it, and anything going to a customer is flagged first.
Anything the Job Adding System owns is refused, with where the change belongs and an offer to draft it. A pull bigger than the day’s budget is refused up front with an estimate, and nothing destructive is on the menu.
The ring is a small app on the person’s own server: push to talk, a calm British voice, a sentence or two out loud and the detail on screen. Speaking can ask for anything. Only a click approves it.
The agent asks. The gateway decides.
The agent can write any code it likes in its sandbox. The only way from there to a platform is the gateway, a separate process under a separate Linux user, and the gateway is the security boundary.
Inside the gateway, every request
Every job, over MCP
The Job Adding System publishes its catalogue of read-only checks as an MCP server, the open protocol assistants use to call tools. They are the same Python checks behind the staff console’s Ask JAS, run over JAS’s own records, so a question never sets off a live call to the accounts, the CRM or the work boards.
Who is asking. Each server signs in with its own managed identity, which holds a single application role. JAS maps it to the person and checks them against the staff console’s allowlist on every call, so removing one line on the JAS side and restarting the connector cuts a server off at once.
How it gets there. The route reuses the edge that already fronts the staff console: a request must carry that server’s service token and come from that server’s address, or it never reaches production. No new software, and no network change on the production server.
What comes back. Structured verdicts, never free text: data for the agent to reason over, not prose it could mistake for instructions. Every call is audited against the person who asked, and sales reps’ results have every money field removed by JAS itself, so even a misconfigured gateway could not leak one.
Ship the integrations, not the system
The clients JAS uses to talk to each platform are the most valuable code it has: more than a year of verified behaviour, from paging and retries to each platform’s quirks and rate limits. Every executive workspace gets exactly those, read-only, and nothing else.
A JAS release that changes a client becomes a JARVIS update: a new workspace pushed like a software update.
Every write waits for a click
A prompt is not a security control
Every hard control sits below the agent: Linux users, file ownership, the firewall and separate processes. The agent’s own rules sit on top, for good behaviour and a clean experience, not as the boundary.
The agent runs as an unprivileged user with no production credentials. Tokens live in the server’s own vault, reachable only through the server’s identity, and the firewall stops the agent’s user from reaching the metadata service that issues it.
Per-user firewall rules let the agent reach only the proxy, the gateway and the local resolver, all on the loopback. The proxy logs every destination and denies paste and webhook sites, and the shell runs in a sandbox whose only route out is the gateway.
No inbound ports. SSH answers only on the private network, with keys only, and each person’s devices can reach their own server and nothing else. A server can start no connection to anything on that network.
The policy, the workspace and the gateway are root-owned and read-only to the agent. Bypass and auto-approve modes are switched off, only IT’s hooks and permission rules load, and every change to the policy files is logged.
A doctor command runs the negative tests as the agent user: reach the internet directly, reach the metadata service, read a secret, use sudo, write to the policy. Each one must fail, on every server, before anyone is onboarded.
Bicep and cloud-init build the server; a versioned bundle and an idempotent apply step do the rest, so a rebuild is a deploy, not a rescue. Each server checks its packages against public vulnerability data every morning and its listening ports every five minutes.