vikstra · a unarii product

ServiceNow, on your desk.

A desktop workbench for ServiceNow developers. Sign in the way you always do, then write scripts, trace records, review update sets and test flows across all your instances. Nothing installs on the instance.

  • your own browser session, no API account
  • production read-only by default
  • macOS
  • v0.1, early access
The vikstra editor with the Script Include TaskStateUtil open beside its record form. The footer reads findings clean and 7 references.The vikstra editor with the Script Include TaskStateUtil open beside its record form. The footer reads findings clean and 7 references.
the workbenchscript include · record form · findings clean · 7 references
35
artifact types in one editor
1.4 s
where_used over 12,901 artifacts, zero live requests
8
deterministic security checks, each with evidence
~5,100
automated tests, plus end-to-end runs on a live instance
script editor

An editor that knows the instance.

Completion comes from the instance’s live dictionary. The validator flags unknown tables, invented Glide classes and GlideAjax mistakes on open and on save, and offers a quick fix where one is safe.

7 references · before-insert on 4.1M rows · 3 ACLsblast radius, computed on open and save, no model involved
  • business rules, script includes, ACLs, catalog items and more
  • F12 definition, Shift+F12 usages from the local code graph
  • version history with a real diff and gated revert
  • compare one artifact across instances by name
Dependency graph for the Script Include IncidentUtilsSNC at one hop: what it calls, the property it reads, the roles it checks and the tables it queries.Dependency graph for the Script Include IncidentUtilsSNC at one hop: what it calls, the property it reads, the roles it checks and the tables it queries.
dependenciescalls · property · roles · tables · 1 hop
lists and forms

Lists and forms, as the instance has them.

Lists open in the views configured on the instance, with columns sized to what they hold and references you can click through. Forms follow the form layout of the view you pick.

  • the instance’s own views in a view picker
  • encoded query and quick filters above every list
  • choice labels in full, dates in monospace
  • sections and columns read from the form configuration
An incident list in the instance's default view, with columns sized to their values, full choice labels and clickable reference cells.An incident list in the instance's default view, with columns sized to their values, full choice labels and clickable reference cells.
a listdefault view · references open · 77 shown
Incident INC0000060 laid out as the instance lays out its Default view: the main section in two columns, then full-width fields, then Notes.Incident INC0000060 laid out as the instance lays out its Default view: the main section in two columns, then full-width fields, then Notes.
a formform layout from the instance · default view
records and the why

Ask a record why.

Open any record and see what runs on save, in order. See why a field is mandatory, which ACLs decide access, and which business rule most likely changed a value, ranked from the audit trail. All fields shows the rest: raw values, where each field is declared, and what the form leaves out.

  • Cmd+K takes a sys_id, INC0010001, a URL or an encoded query
  • /br /acl /logs /dict and 14 more slash commands
  • act as another user in a separate side session
  • background scripts that clean up after themselves
The record explorer on an incident: why each field is mandatory, and every business rule that runs when the record is saved, in order.The record explorer on an incident: why each field is mandatory, and every business rule that runs when the record is saved, in order.
record explorerwhy mandatory · business rules on save · in order
The All fields view of an incident filtered to reference fields: name, label, target table, display value beside raw sys_id, and the table each field is declared on.The All fields view of an incident filtered to reference fields: name, label, target table, display value beside raw sys_id, and the table each field is declared on.
all fieldsraw value · display value · declared on
update sets

Update sets, reviewed like pull requests.

Every entry gets a diff, every payload script goes through the validator, and dependencies are checked against the target instance before you promote. After an upgrade, skipped records are sorted for you.

  • collisions with other open update sets
  • capture audit: ACL without roles, field without table, cross-scope
  • dependency check against the target before promotion
  • skipped records sorted: OOB-only, customer-only, conflict
An update set reviewed as a pull request: a Script Include's script diffed against the version before it, with the validator's hardcoded sys_id finding on the changed line.An update set reviewed as a pull request: a Script Include's script diffed against the version before it, with the validator's hardcoded sys_id finding on the changed line.
update set reviewper-entry diff · validator finding · fields changed

Every write goes through one gate. You confirm it, vikstra reads it back, and the old version is kept.

UI, script runner, AI agent, MCP: there is no second path.

  1. confirm
  2. snapshot
  3. write
  4. read back
  5. audit
flows and ATF

Watch a flow run.

Flows are drawn as a graph, with branches side by side. Run one and the path lights up as it executes. Compare two runs step by step to find the branch only one of them took.

  • add and drag steps, data pills, publish with a backup
  • replay a run, diff two runs, follow recent runs
  • generated ATF tests, kept only if they pass and leave nothing behind (needs a model)
The Flow Designer flow On-Call: Time off approval drawn as a graph, with its If and Else-if branches and their steps.The Flow Designer flow On-Call: Time off approval drawn as a graph, with its If and Else-if branches and their steps.
flowson-call: time off approval · if · else-if · steps
analysis

Search every script, locally.

vikstra keeps an encrypted index of each instance on your machine, with full-text search over every script body. A where-used search runs against that index and sends no requests to the instance.

  • sweeps ranked against the out-of-box baseline
  • security review: eight checks, each with evidence
  • ACL matrix: users by operation, never probed by writing
  • dependency graph with rename impact
The security review of an instance: elevated roles, public endpoints and script findings, each finding with a confidence level.The security review of an instance: elevated roles, public endpoints and script findings, each finding with a confidence level.
analysiselevated roles · public endpoints · script findings · confidence
AI, if you want it

A model that is checked against the instance.

The editor, records, update sets and analysis work without a model. Add one and it reads the live instance through about 70 read tools. A sys_id in an answer that no tool returned is flagged, and scripts it writes are validated against the live dictionary. A personal-data filter runs on every request and cannot be switched off.

  • Anthropic, OpenRouter, OpenAI-compatible, local Ollama
  • scripts checked against the instance before “verified”
  • plan and apply: approval bound to the plan hash
  • MCP server and client, same gate, same audit
  • user story mode, on a local model, writes nothing
The chat view: an answer containing a background script marked checks passed, with the tool-call summary, on a local model.The chat view: an answer containing a background script marked checks passed, with the tool-call summary, on a local model.
chatchecks passed · tool calls · open in script runner
safety rails

Careful by default.

production

Read-only until you allow writes.

Write access lasts one session. Dry runs and test generation are refused on prod.

every write

Confirmed, then read back.

A push is refused if the record changed since you opened it.

history

Snapshotted and audited.

The prior state goes to an undo store, the write to an append-only log.

at rest

Encrypted, on your machine.

Chats, tabs and snapshots in ~/.vikstra are AES-256-GCM encrypted. The index is sealed on quit and screen lock.

all nine rules in the manual →

questions

The honest answers.

Does anything get installed on the instance?

Nothing. vikstra uses the session from your normal sign-in. When background scripts are not available to you, you can run a script as a temporary fix script instead, which vikstra then deletes together with its update set entry. Anything it could not remove is reported.

What does it need from my instance admin?

Nothing. You sign in through the usual login page, SSO and MFA included. There is no API account, no OAuth app and no integration user. vikstra can do what your own account can do, and nothing more.

Where does my data go?

To your disk, in ~/.vikstra. Chats, open tabs, jobs and snapshots are encrypted with AES-256-GCM, key in the OS keychain, and the index is sealed the same way when the app quits or the screen locks. The audit log, flow backups and, in the default workspace mode, a copy of the instance’s scripts are plain files. There is no vikstra cloud and no account, and no telemetry, crash reports or analytics. Besides the instance and the AI provider you configure, the app contacts an update feed if one is set, Hugging Face for the privacy model when no filter service is set up, and GitHub when you download the ServiceNow docs.

Do I need AI to use it?

No. The editor, validator, record explorer, update set review, flows and analysis all work with no model. Plain-language list filters and ATF test generation need one. Each instance can be set to hosted AI, local only, or no AI.

Can it delete records?

Only the child rows of a composite artifact, such as a catalog item’s variables, through the same gate and with a snapshot. The AI agent, MCP clients and the scripting host cannot delete at all.

What can’t it do yet?

UI Builder and Workspaces, decision tables, custom Flow Designer actions, an import set test bench, and Service Portal widget preview (widgets are edited as scripts). For those, the platform UI is still the right tool.

Which platforms, and can I download it?

macOS. A Linux build exists but has seen little testing, and Windows is not supported yet. It is version 0.1 and builds are not public yet. The macOS build is not notarized, so the first launch needs right-click, Open. Write to us and we will send you one.

early access · v0.1

Try it on your own instances.

vikstra is early. Tell us what you work on and which instances you look after, and we will send you a build.

I'm interested

or write to Richard at