Documentation menu

Docs Security and deployment

Deploy and manage

Install Verbiqo the way you install other software, then set its AI service, embedding service, licence and switches centrally. Values you set are used on every computer and locked in Settings. Roll out to a team is the short version.

Install

MacWindows
PackageThe notarized DMG from the download section; deploy Verbiqo.app to /Applications with your device management (Jamf, Intune, Kandji).choco install verbiqo from your internal feed, or the installer with /ALLUSERS /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-.
UpgradesReplace the app; Verbiqo also tells people when a new version is out, unless update checks are turned off.choco upgrade verbiqo: Verbiqo is closed, upgraded and started again for whoever had it open.
PermissionAccessibility, for reading and replacing a selection. Your device management can grant it with a Privacy Preferences (PPPC) profile for com.verbiqo.app, or each person allows it once.None.

Roll out to a team: the licence and the AI services

One settings file sets everything a team needs: the AI service, the embedding service for Prometheus, and the licence. Nobody is sent a file or a URL, and each person only ever types their own API key.

  1. Write the settings

    Start from the template and keep what you need:

    {
      "organization": "Example",
      "provider": "openai",
      "endpoint": "https://ai-gateway.example.internal/v1/chat/completions",
      "model": "qwen3-30b-instruct",
      "sendApiKey": true,
      "embeddingEndpoint": "https://ai-gateway.example.internal/v1/embeddings",
      "embeddingModel": "qwen3-embedding",
      "embeddingUsesModelKey": true,
      "trustedCA": {
        "mac": "/Library/Application Support/Verbiqo/company-ca.pem",
        "windows": "C:\\ProgramData\\Verbiqo\\company-ca.pem"
      },
      "licensePath": {
        "mac": "/Library/Application Support/Verbiqo/team.verbiqo-license",
        "windows": "C:\\ProgramData\\Verbiqo\\team.verbiqo-license"
      }
    }
  2. Build the files

    verbiqo policy settings build settings.json verbiqo-settings

    This writes the Mac profile, the Group Policy template, the Intune script and a .reg file (which is which).

  3. Copy the CA and the licence file

    To the same paths on every computer, in a folder only administrators can change (how).

  4. Push the settings

    Through Jamf, Intune, Kandji or Group Policy (Mac, Windows).

On each computer, within half a minute: the AI service and embedding service are set and locked, the licence is imported and takes a seat, and Settings shows Managed by your administrator. Each person enters their own LiteLLM key once in Settings; with embeddingUsesModelKey on, that one key covers the embedding service too. Check it on one Mac and one PC first: Test a deployment.

Managed settings: set and lock

Every value you set here is also locked. Settings shows it greyed out with Managed by your administrator, and the person cannot change it. Anything you leave out stays theirs to set. Locking comes from these values, not from the privacy policy; the policy is a separate check that refuses what it does not allow (which does what).

Set any of these and leave the rest to each person. On a Mac they go in a configuration profile for the preference domain com.verbiqo.app; on Windows, under HKLM\Software\Policies\Verbiqo (all users) or HKCU\Software\Policies\Verbiqo (one user). When both are set, the machine’s value wins.

Settingsettings.jsonMac key (type)Windows value (type)Values
AI providerproviderprovider (string)Provider (REG_SZ)ollama, openai or anthropic: which to use
EndpointendpointollamaURL (string)Endpoint (REG_SZ)The full URL, such as https://ai-gateway.example.internal/v1/chat/completions
Modelmodelmodel (string)Model (REG_SZ)The name the server serves. Test & Load Models becomes Test Connection: it checks the server offers this model and never changes it.
Send an API keysendApiKeyauthenticateWithAPIKey (boolean)AuthenticateWithApiKey (DWORD 0/1)Whether Verbiqo sends a key. Each person still enters their own key.
TimeouttimeoutMillisecondstimeoutMilliseconds (integer)TimeoutMilliseconds (DWORD)1000 to 300000; 300000 for questions about systems
Temperaturetemperaturetemperature (real)Temperature (REG_SZ)0 to 2 (Anthropic 0 to 1), such as 0.2
Context windowcontextTokenscontextTokens (integer)ContextTokens (DWORD)512 to 2000000, such as 32768
Embedding endpoint, for the Prometheus semantic indexembeddingEndpointmetricEmbeddingURL (string)MetricEmbeddingUrl (REG_SZ)The full URL of the embedding service: your LiteLLM gateway, such as https://ai-gateway.example.internal/v1/embeddings, or a local one. Through a gateway
Embedding modelembeddingModelmetricEmbeddingModel (string)MetricEmbeddingModel (REG_SZ)The name the service serves, such as qwen3-embedding.
Embedding uses the model’s API keyembeddingUsesModelKeymetricEmbeddingUsesModelKey (boolean)MetricEmbeddingUsesModelKey (DWORD 0/1)On: Verbiqo sends each person’s own AI model key to the embedding service as well. Use it with a gateway such as LiteLLM, where one key gives access to both the AI model and the embedding model. Off: each person can enter a separate embedding key. Keys are never set centrally; each person enters their own in Settings.
Licence filelicensePathmanagedLicensePath (string)LicensePath (REG_SZ)Your .verbiqo-license file on each computer. Verbiqo imports and activates it by itself: Licences.
Name on licencedeviceLabellicenceDeviceLabel (string)LicenceDeviceLabel (REG_SZ)How each computer appears in the licence’s list of seats. Set it per computer with your management tool’s variable for the computer name or asset tag; set, nobody can change it. Unset, it is the computer’s own name, which each person may change or clear.
Read databases and other systemsextensionsEnabledextensionsEnabled (boolean)ExtensionsEnabled (DWORD 0/1)Off hides Extensions entirely
Send the text around a selectionsendSurroundingTextsendsSurroundingText (boolean)SendSurroundingText (DWORD 0/1)
Clipboard fallbackclipboardFallbackallowClipboardFallback (boolean)AllowClipboardFallback (DWORD 0/1)
Trusted CA, for the AI service and every connectiontrustedCAtlsTrustedCA (string)TrustedCa (REG_SZ)The path of your CA file on each computer, in PEM format; copy the file there with the same device management. Verbiqo reads it in place. Needed when your AI service uses your organization’s own certificate.
Extension limitsextensionLimitsextensionLimits (dictionary)ExtensionLimits (REG_SZ, JSON)How hard Verbiqo may work the systems it reads, such as {"all":{"queriesPerQuestion":30}}: Protect your systems. Not set: Verbiqo’s own protections only.
Send the access record toauditForwardauditForward (string, JSON)AuditForward (REG_SZ, JSON)A syslog URL, a Splunk HTTP Event Collector, or both: {"syslog":"tls://siem.example.com:6514"}. Send it to your SIEM
Require the access recordauditRequiredauditRequired (boolean)AuditRequired (DWORD 0/1)On: Verbiqo reads nothing it cannot record first. Require it
Update checksupdateCheckschecksVerbiqoSite (boolean)CheckForUpdates (DWORD 0/1)Off: no daily check for a new version. An activated licence still renews with verbiqo.app.
Policy state folderpolicyStateDirectoryprivacyPolicyStateDirectory (string)StateDirectory (REG_SZ)Where the highest accepted policy revision is remembered. Optional. The other policy settings (policyPath, policyPublicKeyPath, policyId, policyMinimumRevision, receiptPath) are under Deploy it.

The settings.json column is the name each setting has in the file the generator reads; the Mac and Windows columns are what it writes.

  • An endpoint you set needs no confirmation from the person: the organization chose it. An Ollama server you name elsewhere on the network is allowed without the “remote” switch.
  • A value out of range is ignored, never fatal: Verbiqo starts with the person’s own value and notes it in the diagnostic log.
  • API keys, including the embedding service’s, are never set centrally: see API keys.
  • The same settings can pin a privacy policy: Privacy policy.

Which provider to set

Your AI serviceProviderEndpoint, for examplePolicy protocol
vLLM, llama.cpp, LiteLLM, LM Studio, or another OpenAI-compatible serveropenaihttps://ai-gateway.example.internal/v1/chat/completionsopenai-chat-completions
Ollamaollamahttp://ollama.example.internal:11434/api/chatollama-chat
OpenAIopenaihttps://api.openai.com/v1/responsesopenai-responses
Anthropicanthropichttps://api.anthropic.com/v1/messagesanthropic-messages
  • Write the provider in lower case, exactly as shown; the same name on Mac and Windows.
  • The endpoint is the full URL, path included. For an OpenAI-compatible server, one ending in /chat/completions is openai-chat-completions in the policy; any other is openai-responses.
  • A privacy policy must name the same endpoint, character for character, and the same model (Privacy policy).

Make the files

One list of values gives every file both platforms need, so nothing is typed twice or misspelt. With the command line tool:

verbiqo policy settings template > settings.json
verbiqo policy settings build settings.json verbiqo-settings

In settings.json, keep only what you want set and locked; anything left out stays each person’s own. A file path can be one string, or { "mac": "…", "windows": "…" } where they differ. A misspelt name or a value out of range is refused with the fix. The folder then holds:

FileFor
com.verbiqo.app.plistMacs, through Jamf Pro or Intune
Verbiqo.mobileconfigMacs, through Kandji, or one Mac
ADMX/Windows, through Group Policy or Intune
Verbiqo-settings.ps1Windows, through an Intune script
Verbiqo.regOne Windows PC

Push the settings to Macs

ToolHow
Jamf ProComputers › Configuration Profiles › New › Application & Custom Settings › Upload: preference domain com.verbiqo.app, then com.verbiqo.app.plist.
Microsoft IntuneDevices › macOS › Configuration › Create › Templates › Preference file: preference domain com.verbiqo.app, then com.verbiqo.app.plist.
KandjiLibrary › Add new › Custom Profile: upload Verbiqo.mobileconfig.
One MacDouble-click Verbiqo.mobileconfig, then System Settings › General › Device Management › Install.

Push the settings to Windows PCs

ToolHow
Group PolicyCopy ADMX/Verbiqo.admx into the PolicyDefinitions folder and ADMX/en-US/Verbiqo.adml into PolicyDefinitions\en-US: your domain’s central store (\\domain\SYSVOL\domain\Policies\PolicyDefinitions), or C:\Windows\PolicyDefinitions on one PC. Then edit a GPO: Computer Configuration › Policies › Administrative Templates › Verbiqo, and enable each setting with its value.
Microsoft IntuneDevices › Scripts and remediations › Platform scripts › Add (Windows): Verbiqo-settings.ps1, run as the system (not the signed-in user), in 64-bit PowerShell. Or import the template under Devices › Configuration › Import ADMX and set the values there.
One PCreg import Verbiqo.reg, as an administrator.

A running Verbiqo picks up new or changed values within half a minute, on both platforms.

Copy the CA, policy and licence files

Settings only say where a file is: the CA file, a signed policy and its public key, and the licence file must be on each computer too. Verbiqo reads your CA from the file even if the computer already trusts it. Put them in one folder that everyone can read and only administrators can change: /Library/Application Support/Verbiqo on a Mac, C:\ProgramData\Verbiqo on Windows.

ToolHow
Group PolicyComputer Configuration › Preferences › Windows Settings › Files › New › File: source on a share, such as \\fileserver\verbiqo$\company-ca.pem, destination C:\ProgramData\Verbiqo\company-ca.pem, action Replace. One item per file.
Microsoft Intune (Windows)A platform script, run as the system, like the one below; or the files in a Win32 app.
Jamf Pro, Kandji, Intune (Mac)A package that installs the files into /Library/Application Support/Verbiqo, or a script run as root that writes them.

On Windows, also lock the folder: anyone can create folders under C:\ProgramData, so someone who made Verbiqo first could change what is in it. A script that writes the CA and does that:

$dir = 'C:\ProgramData\Verbiqo'
New-Item -ItemType Directory -Path $dir -Force | Out-Null
# Owned by Administrators, so whoever made the folder cannot change this back.
icacls $dir /setowner Administrators /T | Out-Null
icacls $dir /inheritance:r /grant:r 'Administrators:(OI)(CI)F' 'SYSTEM:(OI)(CI)F' 'Users:(OI)(CI)RX' /T | Out-Null
Set-Content -Path "$dir\company-ca.pem" -Encoding ascii -Value @'
-----BEGIN CERTIFICATE-----
(your CA, as PEM text)
-----END CERTIFICATE-----
'@

On a Mac, as root:

mkdir -p "/Library/Application Support/Verbiqo"
cp company-ca.pem policy-signed.json policy-public.pem team.verbiqo-license "/Library/Application Support/Verbiqo/"
chown -R root:wheel "/Library/Application Support/Verbiqo"
chmod 755 "/Library/Application Support/Verbiqo"; chmod 644 "/Library/Application Support/Verbiqo/"*

API keys

API keys are never part of the central settings. A key copied onto every computer can be read by anyone who uses those computers, so it stays neither secret nor tied to one person. Instead:

  • No key: run the AI gateway on your network without one, reachable only from your computers, and pin it with a privacy policy. Set sendApiKey to false.
  • A key per person: issue each person their own key at the gateway (LiteLLM calls these virtual keys), so usage and access are per person. Set sendApiKey to true: Verbiqo asks for the key, and each person enters it once in Settings, where it is kept in the Keychain or Credential Manager.

Different rules for different groups

Verbiqo has no sign-in of its own: your device management decides who gets which rules, the same way it targets any profile or policy.

  1. One policy per group

    Sign a policy for each, with its own policyId and the same key. For example acme.dba allowing "pg" and "mysql", and acme.support allowing only "prom", each with its own features and limits.

  2. Copy the files

    Put each group’s signed policy on its computers, or every policy on every computer under its own name, such as policy-dba.json and policy-support.json.

  3. One settings file per group

    Each group’s settings.json names its policy file in policyPath and pins its ID in policyId, so a computer cannot be pointed at another group’s file. Build each with verbiqo policy settings build.

  4. Target each group

    Assign each group’s files to it in your tool.

ToolTarget a group of computersTarget people
Jamf ProScope the profile to a smart or static computer groupA profile at User level, scoped to users or user groups
Microsoft IntuneAssign the profile or script to a device groupAssign it to an Entra ID user group
KandjiPut the profile in the group’s blueprint—
Group PolicyLink the GPO to the group’s OU, or filter it by a security group: Computer ConfigurationThe same values under User Configuration, which go to HKCU\Software\Policies\Verbiqo
  • Per person on Windows applies where no policy is set for the whole computer: a machine-wide policy wins over a user’s.
  • A group with no access to any system: instead of a policy, set extensionsEnabled to false in that group’s settings, which hides Extensions entirely.
  • To check a computer: verbiqo policy check on its policy file says what that group may do.

Licences for an organization

Deploy the licence like the CA file: copy it onto each computer and name it in the settings. Nobody is sent the file, nobody imports it, and Settings › Licence shows Managed by your administrator with Import and Deactivate turned off.

  1. Copy the licence file

    Put your .verbiqo-license file in the protected folder with the other files: /Library/Application Support/Verbiqo/team.verbiqo-license on a Mac, C:\ProgramData\Verbiqo\team.verbiqo-license on Windows (how).

  2. Name it in the settings

    Add licensePath to settings.json and build the files as above:

    "licensePath": {
      "mac": "/Library/Application Support/Verbiqo/team.verbiqo-license",
      "windows": "C:\\ProgramData\\Verbiqo\\team.verbiqo-license"
    }
  3. Push both

    Each computer imports the file and, for a licence key, takes a seat at verbiqo.app: at launch, within half a minute of the settings arriving, and at every licence check after. A computer that cannot get a seat (all in use, or offline) tries again at the next check and keeps any licence it already had.

  • Seats: one licence key with a number of seats; each computer holds one and renews it daily. A computer that has not checked in for 37 days frees its seat.
  • See and free seats: whoever holds the licence key file can list the computers holding its seats, least recently active first, and free one:
    verbiqo licence seats team.verbiqo-license
    verbiqo licence free team.verbiqo-license hw-1234abcd
    Each computer is listed by its name on the licence (its computer name unless changed, or deviceLabel above), its device ID, and when it last checked in, to the minute. Each computer’s device ID is in Settings › Licence. Another computer’s seat can be freed once it has gone 7 days without checking in, so nobody takes the seat of someone who is working.
  • Someone leaves: wipe or reassign their computer; its seat frees 7 days after it last checked in (or at once, with verbiqo licence free after those 7 days). The file sits on each computer readable by the person using it, as it must for Verbiqo to read it, so someone determined could copy it. If you think a copy left with someone, issue a replacement licence under a new ID, push it to the same path, and revoke the old one: every computer moves to the new licence by itself, and the copy stops working.
  • A new licence, more seats, a renewal: replace the file at the same path. Computers pick it up at their next check.
  • Computers that never reach the internet: a seat file listing each computer’s device ID, deployed the same way. Trial and licences

Something missing or unclear? Email hello@verbiqo.app.