Triage and answer
Numbered, categorised tickets with red / amber / green state and SLA countdown. Users see their own tickets and nothing else.
Cam works a ticket end to end — first line to third — on the user's own machine and in your tenant. It can reset a password, clear a print spooler, click through a dialog nobody can find. What it cannot do is the interesting part, and it is enforced in code rather than asked for in a prompt.
The order is fixed and the user is told before each one, because an agent that goes quiet for four minutes and comes back with “fixed” is impossible to trust or to audit. Every step writes to the ticket as it completes.
Category, priority and tier decided from the description, before anything runs.
Read-only tools only, until it can name the root cause rather than the symptom.
States the fix and why, in one sentence, before touching anything.
Applies it — and this is where the gate does its work.
Proves it worked using the runbook's own check. No verify, no resolve.
Root cause, what changed, what the user should do next.
Every command is classified before it runs. Read-only work goes straight through. Anything that changes the machine is shown to a person in full and waits. Catastrophic operations — and anything deliberately obfuscated — are refused outright, because an approval nobody can read is worthless. Pick a command:
This is the real classifier's logic and the real refusal text, not a mock-up. On a live install the confirm path opens a dialog showing the exact command.
Numbered, categorised tickets with red / amber / green state and SLA countdown. Users see their own tickets and nothing else.
Services, event logs, drivers, network stack, printer queues, profile and cache repair — each from a runbook with a verification step.
Reads the Windows UI Automation tree — the desktop's equivalent of the DOM — so it clicks the Save button, not a coordinate that stops being right when the window moves.
Lockouts, password resets, MFA, licences, group and shared-mailbox access, sign-in log analysis. Under its own least-privilege identity — never Global Administrator.
Joiners, movers and leavers behind a second door: the controller PIN and a live Entra ID admin role, with the target typed out before anything irreversible runs.
Seventeen pages: analytics, devices, teams, escalations, permissions, admin actions, compliance, and a tamper-evident audit log.
Two independent white-box reviews found real, exploitable defects — a domain-wide SYSTEM remote code execution through the deployment package among them. The second round broke several of the fixes. Everything found is closed, and every payload is now a permanent regression test.
ri C:\ -Recurse walked
straight through it. So did a backtick, base64 and cmd /c. A denylist over a
Turing-complete shell cannot be made sound, so it was replaced with an allowlist, a human
confirmation, and outright refusal of anything obfuscated.
The guardrails read the top-level method and path. A Graph $batch carries its real
operations in the body — deleting the organisation sailed through inside one allowed POST.
Sub-requests are now checked as if sent alone.
Tool scope is enforced in the dispatcher, not the prompt. Text on a screen or in a ticket is data, never instruction. 24 injection patterns are stripped before the model sees anything — and that is a signal, not the control.
Kept word for word rather than paraphrased, because a regression test written from memory tests the memory and not the bug. Troubleshoot → Self-attack fires twenty of them at the live code and reports anything that gets through.
Not a product tour. These are the six things CallCamIT does most, played out the way they actually happen — including the three where the right answer is to stop. Each one runs on its own; pick one.
Every line below is produced by the same classifier and the same runbooks that ship in the product.
Everybody on the estate gets a chat box and nothing else. The IT team gets the Controller. Account work sits behind its own console with its own sign-in. These are real screenshots of the shipped application, not mock-ups — the same build a customer installs.
No queue, no settings, no route to anything else. A person describes the problem in their own words and watches Cam work. The permission request is the part worth looking at: Cam asks before touching the machine, on that ticket, and the person can refuse or stop it at any point without giving a reason.
Every tool call is named as it runs — no invisible work.
The system of record. Ticket volume, SLA attainment, what Cam actually did and how long it took, the device fleet, the compliance registers, deployment, and the troubleshooter. Eighteen sections, PIN-gated, and a stop button that means it.
Pause Cam and Emergency stop are always one click away.
Joiners, movers and leavers, in plain English. Separate from the rest of the product on purpose: it needs its own sign-in, an Entra directory role, and it times out. The panel on the right records everything the session changed, so the answer to “who disabled this account” is on the screen rather than in a log somebody has to go and find.
Deletion is recoverable for 30 days. Permanent purge is impossible at any level.
Asked to delete a group and everyone in it, Cam refuses. Not because a prompt told it to be careful — because the operation is blocked in code. Twenty-three operations are refused at every level, there is no setting that enables them, and no administrator can override them. Then it offers what it can do, which is the difference between a guardrail and an obstacle.
Every refusal carries a code you can look up. This one is CC-4001.
Organisations rarely refuse a subject access request. They miss it, because it landed in a shared inbox in April and nobody counted the days. Each register carries its statutory deadline, computed the way the legislation counts — and the troubleshooter fails, not warns, when one passes.
The corresponding date next month, falling back to the month end — so 31 January is due 28 February, not 2 March.
UK GDPR Art. 12(3)To acknowledge, counted from the day after receipt including weekends. New duty, in force since 19 June 2026.
DPA 2018 s.164BFrom awareness, not from having the full picture. That distinction is where the deadline is usually lost.
UK GDPR Art. 33Working days, bank holidays excluded — 20 working days from Christmas Eve is 26 January, not 13 January.
FOIA 2000 s.10 · public sectorSending ticket text to a hosted model is a restricted transfer. With no recorded Chapter V route it falls back to the local model and says so — rather than sending the data and apologising later. Azure in a UK region is correctly no transfer at all.
“I need Read&Write, I'm dyslexic” is a health disclosure nobody planned for. Those tickets are detected and kept on the machine whatever the transfer paperwork says. It over-flags on purpose.
Article 30 record, DPIA, privacy notice, worker monitoring notice and accessibility statement — built from what this install actually does, so they cannot drift from it.
None of this makes an organisation compliant on its own — the duties fall on the controller, not the tool. What ships is the machinery, and an honest list of what your DPO still has to do.
A local model via Ollama. Ticket text, screen contents and audit records never leave the machine. No third-party processor, no international transfer, nothing to assess — and the simplest exit plan there is.
Claude, OpenAI, Azure OpenAI or any OpenAI-compatible endpoint, behind the same interface. Off-site processing has to be acknowledged and assessed before a single ticket moves.
Publish a package to SYSVOL, link one GPO, and machines install at their next restart and report back. The startup script compares versions and exits when they match, so the policy is safe to leave linked permanently.
No seat counting, no device metering, no true-up conversation twelve months in. One subscription covers the organisation — every machine on the domain and everyone who uses one.
£300 including VAT at 20%. Billed monthly, per organisation.
CallCamIT is not sold self-service. Every purchase starts with a walkthrough or a call, so we can see your estate and you can see it refuse something on it.
Devices, tickets, users, admins, runbooks and API calls. We would rather you rolled it out everywhere than rationed it — an IT desk that only covers half the estate is half an IT desk.
You get a clear month. The subscription lapses, the Controller counts down the days, and Cam keeps working tickets throughout — nobody's incident becomes collateral for a late invoice. After 30 days Cam stops accepting new tickets until a licence is installed.
Your data is never held hostage. The Controller, every ticket, the audit trail, exports and backups keep working while Cam is stopped — your staff have subject access rights over that data and those do not pause because an invoice did. Paste a current licence in and Cam resumes at once, with nothing lost and no reinstall.
Nothing, on the default setup. The model runs locally on hardware you already own. If you choose to point it at a hosted provider instead, you pay them directly and we do not mark it up.
A signed file you paste in once. No phone-home, no activation server, nothing to fail on an air-gapped estate — which is exactly where this product is most at home.
A support call that starts “it says it didn't work” costs an hour. One that starts “CC-4102” starts at the answer. Type the code you were given — or the words the message used — and get the same explanation the app gives.
More than half are Cam declining to do something, which is the product working. They are coloured and worded differently, and none of them asks you to contact support — showing “Cam will not format your drive” in the same red box as “the database is corrupt” teaches people to treat both as bugs.
A renumbered code breaks every ticket, article and screenshot that quoted it. Numbers are never reassigned, and a retired code still resolves. A build check fails if the software can ever show a code that has no explanation behind it.
CallCamIT runs on your own machines against a local model, so your service desk does not depend on ours. These are the only parts we host — and none of them is in the path of a ticket being worked.
We publish no uptime percentage until there is a year of real measurement behind one. A number invented for a marketing page is worth nothing to you and we would rather not print it.
| Platform | Windows 10 / 11 and Windows Server. Runs in the system tray; Python 3.11+ and PySide6, packaged with PyInstaller. |
|---|---|
| Model | Local via Ollama by default. Also Anthropic, OpenAI, Azure OpenAI and OpenAI-compatible gateways, with full tool-call translation both ways. |
| Identity | Entra ID → on-premises Active Directory → Windows, in that order. Each person gets their own record and sees only their own tickets. |
| Directory permissions | Cam holds its own least-privilege app registration: helpdesk, user, password, authentication, groups, licence, Intune and Exchange recipient roles. Never Global Administrator. |
| Data at rest | AES-GCM field encryption on descriptions, resolutions, event content and diagnostics. Key protected by Windows DPAPI; data directory ACL'd to the owning account by SID. |
| Audit | HMAC chain under the machine key, with the event count and head hash anchored outside the database — so rewriting history and deleting the most recent events are both detected. |
| Redaction | Passwords, tokens, JWTs, API keys, card numbers, NI numbers, IBANs, private keys and BitLocker recovery keys stripped before anything is written. |
| Backup | Scheduled, verified and encrypted. Consistent SQLite snapshots plus readable CSV/JSON exports, with a MAC'd manifest so an archive cannot vouch for itself. |
| Internet access | Read-only vendor documentation only, on an allowlist, GET only, with every outbound query stripped of names, emails, hostnames, IPs and identifiers. Every request lands in the audit trail. |
| Accessibility | Fluent 2 with full keyboard operation, visible focus, WCAG 2.2 AA contrast and state conveyed by shape as well as colour. Statement generator included for public sector. |
| Codebase | ≈19,600 lines of Python, 657 automated tests including 202 adversarial regressions, 46 self-diagnostic checks across 13 guided scenarios. |
A walkthrough runs about forty minutes: a real ticket worked end to end, the permission gate under pressure, the Controller dashboard, and the compliance registers with your sector selected.
£250 per month excluding VAT, per organisation. Not sold self-service.
Forty minutes, on a call. A real ticket worked end to end, the permission gate under pressure, and the compliance registers with your sector selected. No slides.
£250 per month excluding VAT, per organisation. Not sold self-service.