SETUP

Nothing is installed
on your instance.

No scoped app, no update set, no widget, no stored script, no service account. One OAuth client record — the same mechanism ServiceNow's own mobile apps sign in through — and the console runs on your side of the wire. Here is the whole thing, drawn.

WHAT MOVES WHERE
Four connections. Only one of them writes, and it starts at your click.
YOUR SERVICENOW INSTANCE system of record · security authority incident sys_user · sys_user_has_role sc_req_item kb_knowledge oauth_entity the only record we add · active ACLs · roles · user criteria decide KADDIYA CONSOLE · IN YOUR NETWORK holds no data of its own QUERY · incident active=true^assignment_gr… DRAFT REPLY Send your key · your endpoint YOUR MODEL ENDPOINT whichever one you already approved Anthropic · your own key Amazon Bedrock your own gateway we hold no model credential, outside the hosted trial the signed-in user their roles are the ceiling 01 02 03 04
THE INSTANCE-SIDE FOOTPRINT
Six things a platform owner asks about. Five of them are zero.

Nothing to patch

There is no code of ours running on your instance, so there is no version of ours to keep current, and nothing of ours can break in a platform upgrade.

Nothing to test on clone

Refresh a sub-prod instance from production and the only thing to check is whether that one record survived. If it didn't, recreating it is the fifteen minutes below.

One switch turns it off

Set the record inactive. Every session dies with it, immediately, and the decision stays entirely on your side — you never have to ask us to stop.

THE THREE STEPS
One record, one config file, one sign-in.
01

Your admin creates one OAuth record

An authorization-code client in the instance's own OAuth registry. We hand it over pre-written — record type, exact redirect URI, PKCE, recommended token lifespans, and the clone-preserver step — as a change request your CAB can read and approve without reconstructing any of it.

It also answers the question that always comes up: why isn't this a service account? Because we are a user-delegated client, like the platform's own mobile apps, not an integration. There is no standing credential to grant.

artifact: 1 record · keyboard time: ~15 min
New OAuth clientINBOUND INTEGRATION
NameKaddiya
Grant typeAuthorization code
Redirect URLhttps://…/auth/callback
PKCErequired
Refresh lifespanas short as you like
Activetrue
Drawn, not a screenshot — your instance's own form, in your own words.
02

You point the console at your instance

Instance host, the client ID and secret from that record, and the model endpoint your organisation already approved. Configuration, not code — and it is set once for the deployment. The console is a single service; you run it, so instance data never crosses into anyone else's network.

The secret lives in your environment, next to every other secret you hold. It never enters our repository, and there is no place in the product where you type it into a form we operate.

config: 5 values · deploys: 1 service
.env
SN_INSTANCE=acme.service-now.com
SN_CLIENT_ID=b23fe2b0d7ee…
SN_CLIENT_SECRET=••••••••••••
MODEL_ENDPOINT=https://gateway.acme…
MODEL=claude-sonnet-5
Five lines. There is no sixth line that grants anything.
03

Each person signs in as themselves

No accounts to create, no directory to sync, no provisioning project. If someone can sign in to your ServiceNow, they can sign in here — and what they see is decided by the roles they already carry, read back from the instance at sign-in.

Which is also the offboarding story. Disable the person in ServiceNow and they are disabled here, in the same instant, because there was never a second account to remember.

provisioning: none · offboarding: theirs, not ours
DW Dana Whitfielddana.whitfield · acme.service-now.com
ROLES · READ FROM sys_user_has_role
itilsn_incident_readcatalogknowledge
GROUPS · sys_user_grmember
Network OpsService Desk L2
This is what decides what Kaddiya can see.
We didn't grant any of it. We only read it back and show you.
HOW LONG IT ACTUALLY TAKES
Our part is minutes. Your change control is the long pole, and we won't pretend otherwise.
day 0 Change request handed over Written for a CAB, not for us. Your admin reviews it rather than drafting it.
days – weeks Your CAB reviews it This is your calendar, not our software. It is the honest reason a pilot slips, and no vendor's demo makes it shorter.
~15 min The record is created and marked active One form on the instance. Nothing is imported, published, or committed.
minutes later The first person signs in and asks something No pilot group to enrol, no content to load, no training data. It reads the instance as it stands.

If your organisation can't get a change request through in a reasonable window, the self-hosted shape below is the answer we give — the redirect URI stays inside your own network, which is usually the objection underneath the delay.

WHERE THE CONSOLE RUNS
Three shapes. The instance side is identical in all of them.

On a workstation

works today

How an evaluation starts. One person runs the console locally, signs in, and asks their instance a real question. Nothing is shared, nothing is hosted, and the only instance-side change is still that one record.

Self-hosted in your network

works today packaged distribution — signed images, SBOM, preflight checks — is in build

The console is one service with a database; you deploy it where you deploy things. The redirect URI never leaves your perimeter, which is the shape that answers most of what a bank's review is actually asking.

Hosted by us, at kaddiya.com

works today one Postgres with row-level security and a per-org key; org sign-up by registering your own instance at kaddiya.com/start; session tokens sealed under the cookie · a free plan for developer and sub-production instances

The multi-tenant service runs at https://kaddiya.com, and it is deliberately not the shape we lead with for production: the organisations most interested in this product are the ones least willing to let a vendor hold a session token to their production instance. Self-hosted exists for that reason, and the same image runs both shapes. How the hosted trial works.

THE OBVIOUS QUESTION
Why isn't this just an app on the instance?
THE PLAN WE BUILT FIRST, THEN THREW AWAY inside the platform widgets scoped app model no streaming · every step a round trip · the runtime is whatever your tier includes WHAT WE BUILD INSTEAD the platform identity · data · audit console model full toolchain · the model contract stays yours · nothing to install

We started there. The first design was widgets on the portal and a scoped app brokering model calls out through the platform, and we abandoned it for reasons that haven't changed: server script can't stream an answer, every step of the agent's work becomes a round trip through the instance, and the AI runtime becomes whichever one your licensing tier happens to include.

Running outside, the agent gets a full toolchain and you keep the model contract you already negotiated — while ServiceNow keeps every job it is genuinely the authority on: who you are, what you're allowed to see, and what happened.

Installing nothing isn't a shortcut around the hard part. It is the part we designed for.