CallCamIT AI-POWERED IT SUPPORT

The IT desk that lives on the PC it fixes.

CallCamIT is an AI helpdesk for Windows. Someone types what’s wrong and Cam works it on their PC: it diagnoses, fixes and checks the fix, with 110 runbooks to work from, and names each step as it runs. When software can’t fix it, your team gets the ticket with the evidence already gathered.

  • The user can stop it at any moment
  • Every step written to the ticket
  • £800 a month per organisation, or £25 a person a month
3763
automated tests, run before every release
847
adversarial regressions: attacks, and the cases around them
110
proven runbooks the agent works from
65
self-diagnostic checks, including a self-attack
40
things it will never do, for anyone
How a ticket moves

Six steps, announced as they happen.

The order is set in Cam's instructions, and Cam is told to announce each step to the user before starting it, 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.

  1. Triage

    Category, priority and tier decided from the description, before anything runs.

  2. Diagnose

    Told to use read-only tools until it can name the root cause rather than the symptom.

  3. Plan

    Told to state the fix and why, in one sentence, before touching anything.

  4. Fix

    Applies it — and this is where the gate does its work.

  5. Verify

    Told to prove it worked with the runbook's own check before it resolves, and the ticket shows what it checked.

  6. Document

    Root cause, what changed, what the user should do next.

The permission gate · try it

The list of things it refuses is the product.

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:

Commands

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.

Requested action
Get-Service spooler
ALLOW runs immediately
Read-only. One of 126 vetted commands that observe and change nothing, so it runs without interrupting anyone.
1 · Catastrophic Not matched
2 · Obfuscation Not matched
3 · Read-only allowlist Not matched
What it actually does

First line to third, on one licence.

First line

Triage and answer

Numbered, categorised tickets with red / amber / green state and SLA countdown. Users see their own tickets and nothing else.

Second line

The user's machine

Services, event logs, drivers, network stack, printer queues, profile and cache repair — each from a runbook with a verification step.

Second line

Works the screen

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.

Third line

Entra ID and Microsoft 365

Lockouts, password resets, MFA, licences, group and shared-mailbox access, sign-in log analysis. Under its own least-privilege identity — never Global Administrator.

Privileged

Admin Cam

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.

Operations

Controller dashboard

Twenty-two pages: analytics, devices, teams, escalations, permissions, admin actions, compliance, and a tamper-evident audit log.

  • Emergency stop and per-ticket cancel
  • Verified, encrypted backups
  • Guided troubleshooter with one-click fixes
Security · the adversarial review

We attacked it, fixed it, then attacked the fixes.

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.

Found and fixed

The denylist was decorative

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.

Found and fixed

Batched requests smuggled everything

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.

Standing

Nothing the model can talk its way past

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.

  • 40 operations refused at every privilege level
  • 13 applications never driven at all
  • No password reset, MFA change, disable or delete of a privileged or break-glass account through its Microsoft 365 tools
tests/test_redteam.py Attacks that worked once, and the cases pinned around them 847 regressions

The attacks are kept word for word rather than paraphrased, because a regression test written from memory tests the memory and not the bug. Beside them sit cases of ordinary work that must still go through, and a fix that blocks one of them fails the suite. Troubleshoot → Self-attack fires twenty of the attacks at the live code and reports anything that gets through.

See it in action

Five minutes of a
Tuesday morning.

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.

Ticket CC-04412 0:00

Every line below is produced by the same classifier and the same runbooks that ship in the product.

The three views

One product,
three different jobs.

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 recordings of the shipped application's real windows, with Cam's side played from a script so the same frames come out every time. They are not mock-ups, and not a live model run.

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.

UK law · built in, not bolted on

The clocks that people miss, running.

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.

Subject requests
1 month

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)
Complaints
30 days

To acknowledge, counting the day of receipt as day one, weekends included. New duty, in force since 19 June 2026.

DPA 2018 s.164A(3)
Personal data breach
72 hours

From awareness, not from having the full picture. That distinction is where the deadline is usually lost.

UK GDPR Art. 33
Freedom of information
20 days

Working days, bank holidays in any part of the UK excluded — 20 working days from Christmas Eve is 27 January, not 13 January.

FOIA 2000 s.10 · public sector

Duties follow the sector, chosen at install.

Transfers

Blocked until assessed

Sending ticket text to a hosted model is a restricted transfer. With no recorded Chapter V route it uses the local model instead and says so, where the PC has one that can answer; where it has none, the ticket is held for a person with CC-7006. Nothing is sent and apologised for later. Azure in a UK region is correctly no transfer at all.

Article 9

Health data in a ticket never goes to a hosted provider

“I need Read&Write, I'm dyslexic” is a health disclosure nobody planned for. Those tickets are detected and never sent to a hosted provider, whatever the transfer paperwork says: the local model answers them, or the ticket is held for a person. It over-flags on purpose. (Pointing the engine address at a server elsewhere is different: every ticket goes there, so use the OpenAI-compatible option for a server of your own.)

Records

Generated from the live config

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.

  • Each labelled a draft, for a person to sign
  • DPIA leaves consultation blank on purpose
  • Includes the risks the software does not solve

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.

Your estate, your model, your building.

Default

Fully on-premises

A local model. Ticket text, screen contents and audit records stay on the machine: no AI processor, no international transfer for the support work itself, and the simplest exit plan there is. The internet is still used, and each use is in the paperwork: the first start downloads the model, several gigabytes; looking a fault up, where you leave it on, sends a scrubbed error message to DuckDuckGo and reads pages from a fixed list of vendor sites; on the Team plan, activating a key contacts us; and Microsoft 365 work, where you set it up, goes to your own tenant.

Optional

Bring your own model

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.

Rollout

Group Policy push

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.

  • One policy file for central settings, read at every start
  • Per-machine rollout status
  • Matching uninstaller

Two prices. Nothing metered.

Long gone are the days of paying per ticket for third-party IT support. No device metering, no usage meter, no true-up conversation twelve months in. Enterprise covers the organisation — every machine on the domain or in the tenant and everyone who uses one. Team is for the company with no server at all, where everyone works from their own laptop: one key, the number of seats you choose, and nothing to install centrally.

CallCamIT · Enterprise
£800 per month
no VAT charged

No VAT is charged: we are not registered for VAT, so £800 is the whole price. Billed monthly, per organisation.

  • Unlimited devices and users on your domain
  • First, second and third line — the whole agent
  • Admin Cam for joiners, movers and leavers
  • Controller dashboard, all twenty-two pages
  • Group Policy rollout and the deployment package
  • Compliance registers, generated DPIA and notices
  • Verified encrypted backups
  • Updates and new runbooks as they ship
  • Offline licence file — no activation server to fail

Order online in the client portal: create an account with your work address, choose the plan and give your Microsoft Entra tenant ID, which the licence names. We email the first invoice straight away and issue the licence on the day we record the payment. On Active Directory without Microsoft 365 there is no tenant ID to give, so book a walkthrough instead; anyone can book one first to see it refuse something on their own estate. Existing customers: your invoices and licence are in the client portal.

CallCamIT · Team
£25 per person, per month
no VAT charged

No VAT is charged: we are not registered for VAT, so £25 a seat is the whole price. Billed monthly, by the number of seats on the key. Order online and your Team key is in the client portal at once; laptops activate with it from the day we record the payment of the first invoice.

  • For a company with no server and no tenant
  • Everyone’s own laptop; nothing installed centrally
  • One licence key. You choose the seats; tell us to change them and the next invoice follows
  • Activate at set-up and for each paid period; offline in between, like Enterprise
  • The same engineer, the same 110 runbooks, the same refusals
  • No Microsoft account needed. With Microsoft 365 or Active Directory, the Enterprise plan is the one that fits
  • Installed in minutes with the evaluation installer
  • Updates and new runbooks as they ship

Activation sends us the key, an identifier for the laptop and the laptop’s name, so you can tell your laptops apart on the panel. Nothing else on the laptop is ever sent to us. Retiring a laptop frees its seat there.

What is not metered

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.

What happens if you stop paying

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.

What the model costs

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.

Licensing that works offline

Enterprise is a signed file, emailed when an invoice is paid and pasted into the Controller. No phone-home, no activation server, nothing to fail on an air-gapped estate — which is exactly where this product is most at home. Team is a key: each laptop makes one call to us when a person presses Activate (at set-up and for each paid period), then verifies offline like Enterprise. On both, the expiry date sits inside the signature, so it cannot be edited into a longer subscription.

Support · status code lookup

Every message carries a code you can quote.

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.

Refused by design

Most codes are not faults

About a third are Cam declining to do something, which is the product working. They are coloured and worded differently, and only one of them, CC-6022 (a backup archive that tried to write outside its folder), is worth reporting — showing “Cam will not format your drive” in the same red box as “the database is corrupt” teaches people to treat both as bugs.

Permanent

Codes are never reused

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.

Ranges

The number tells you where to look

  • CC-1xxx — setup, licence, deployment
  • CC-2xxx — the model and connectivity
  • CC-3xxx — working someone's desktop
  • CC-4xxx — directory and admin actions
  • CC-5xxx — commands on a machine
  • CC-6xxx — tickets, storage, backup
  • CC-7xxx — UK compliance blocks
  • CC-8xxx / 9xxx — agent and internal faults

Almost none of this can be down.

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.

Incident history

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.

The details buyers ask for.

CallCamIT technical specification
PlatformWindows 10 / 11 and Windows Server. Runs in the system tray; Python 3.11+ and PySide6, packaged with PyInstaller.
ModelLocal via Ollama by default. Also Anthropic, OpenAI, Azure OpenAI and OpenAI-compatible gateways, with full tool-call translation both ways.
HardwareAn NVIDIA graphics card with 16 GB of video memory runs the standard model; 8 GB runs the smaller one, and CallCamIT chooses it itself at start when the standard model would not fit. No graphics card: point Cam at a hosted provider you already contract with, or at a server of your own that has one.
IdentityEntra ID → on-premises Active Directory → Windows, in that order. Each person gets their own record and sees only their own tickets.
Directory permissionsCam holds its own least-privilege app registration: helpdesk, user, password, authentication, groups, licence, Intune and Exchange recipient roles. Never Global Administrator.
Data at restAES-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.
AuditHMAC 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.
RedactionPasswords, tokens, JWTs, API keys, card numbers, NI numbers, IBANs, private keys and BitLocker recovery keys stripped before anything is written.
BackupScheduled, verified and encrypted. Consistent SQLite snapshots plus readable CSV/JSON exports, with a MAC'd manifest so an archive cannot vouch for itself.
Internet researchRead-only: a search through DuckDuckGo, pinned to Microsoft's documentation, and a fixed allowlist of documentation and technical Q&A sites, GET only. Email addresses, IPv4, IPv6 and MAC addresses, GUIDs, share paths, UK postcodes (in capitals, or in lower case with the space), UK phone numbers, user folder names, labelled secrets and long opaque codes are stripped from every search phrase; a person's name, a username or a computer name is not recognised, so Cam is told to leave them out. A page is read by the address Cam gives, which is checked against the allowlist and for the same identifiers, and is not fetched if it carries one (a GUID or long code in the address of a page the search itself returned is taken as the page's name); a search typed into DuckDuckGo's address is refused. Every request lands in the audit trail. The internet's other uses (the model download, Team activation, Microsoft 365) are listed under Fully on-premises.
AccessibilityFluent 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; our own statement lists what is not yet right.
Codebase≈41,900 lines of Python, 3,763 automated tests including 847 adversarial regressions, 65 self-diagnostic checks across 14 guided scenarios.

See it refuse something on your own estate.

A walkthrough is thirty minutes on Microsoft Teams: a real ticket worked end to end, the permission gate under pressure, the Controller dashboard, and the compliance registers with your sector selected. No slides.

£800 a month per organisation, or £25 a person a month for laptop-only teams. No VAT charged. Order online, or book a walkthrough first. Read the specification

We reply within one working day, from a person rather than a sequence. No mailing list, no follow-up campaign, and no sales tooling behind the form. Our own server holds the time you pick and emails you a link to confirm it, then your booking with a link to cancel; our calendar is told the time and a reference number, never your details. What we do with it is set out in our privacy notice.