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
| Mac | Windows | |
|---|---|---|
| Package | The 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-. |
| Upgrades | Replace 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. |
| Permission | Accessibility, 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.
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" } }Build the files
verbiqo policy settings build settings.json verbiqo-settingsThis writes the Mac profile, the Group Policy template, the Intune script and a
.regfile (which is which).Copy the CA and the licence file
To the same paths on every computer, in a folder only administrators can change (how).
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.
| Setting | settings.json | Mac key (type) | Windows value (type) | Values |
|---|---|---|---|---|
| AI provider | provider | provider (string) | Provider (REG_SZ) | ollama, openai or anthropic: which to use |
| Endpoint | endpoint | ollamaURL (string) | Endpoint (REG_SZ) | The full URL, such as https://ai-gateway.example.internal/v1/chat/completions |
| Model | model | model (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 key | sendApiKey | authenticateWithAPIKey (boolean) | AuthenticateWithApiKey (DWORD 0/1) | Whether Verbiqo sends a key. Each person still enters their own key. |
| Timeout | timeoutMilliseconds | timeoutMilliseconds (integer) | TimeoutMilliseconds (DWORD) | 1000 to 300000; 300000 for questions about systems |
| Temperature | temperature | temperature (real) | Temperature (REG_SZ) | 0 to 2 (Anthropic 0 to 1), such as 0.2 |
| Context window | contextTokens | contextTokens (integer) | ContextTokens (DWORD) | 512 to 2000000, such as 32768 |
| Embedding endpoint, for the Prometheus semantic index | embeddingEndpoint | metricEmbeddingURL (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 model | embeddingModel | metricEmbeddingModel (string) | MetricEmbeddingModel (REG_SZ) | The name the service serves, such as qwen3-embedding. |
| Embedding uses the model’s API key | embeddingUsesModelKey | metricEmbeddingUsesModelKey (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 file | licensePath | managedLicensePath (string) | LicensePath (REG_SZ) | Your .verbiqo-license file on each computer. Verbiqo imports and activates it by itself: Licences. |
| Name on licence | deviceLabel | licenceDeviceLabel (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 systems | extensionsEnabled | extensionsEnabled (boolean) | ExtensionsEnabled (DWORD 0/1) | Off hides Extensions entirely |
| Send the text around a selection | sendSurroundingText | sendsSurroundingText (boolean) | SendSurroundingText (DWORD 0/1) | |
| Clipboard fallback | clipboardFallback | allowClipboardFallback (boolean) | AllowClipboardFallback (DWORD 0/1) | |
| Trusted CA, for the AI service and every connection | trustedCA | tlsTrustedCA (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 limits | extensionLimits | extensionLimits (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 to | auditForward | auditForward (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 record | auditRequired | auditRequired (boolean) | AuditRequired (DWORD 0/1) | On: Verbiqo reads nothing it cannot record first. Require it |
| Update checks | updateChecks | checksVerbiqoSite (boolean) | CheckForUpdates (DWORD 0/1) | Off: no daily check for a new version. An activated licence still renews with verbiqo.app. |
| Policy state folder | policyStateDirectory | privacyPolicyStateDirectory (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 service | Provider | Endpoint, for example | Policy protocol |
|---|---|---|---|
| vLLM, llama.cpp, LiteLLM, LM Studio, or another OpenAI-compatible server | openai | https://ai-gateway.example.internal/v1/chat/completions | openai-chat-completions |
| Ollama | ollama | http://ollama.example.internal:11434/api/chat | ollama-chat |
| OpenAI | openai | https://api.openai.com/v1/responses | openai-responses |
| Anthropic | anthropic | https://api.anthropic.com/v1/messages | anthropic-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/completionsisopenai-chat-completionsin the policy; any other isopenai-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:
| File | For |
|---|---|
com.verbiqo.app.plist | Macs, through Jamf Pro or Intune |
Verbiqo.mobileconfig | Macs, through Kandji, or one Mac |
ADMX/ | Windows, through Group Policy or Intune |
Verbiqo-settings.ps1 | Windows, through an Intune script |
Verbiqo.reg | One Windows PC |
Push the settings to Macs
| Tool | How |
|---|---|
| Jamf Pro | Computers › Configuration Profiles › New › Application & Custom Settings › Upload: preference domain com.verbiqo.app, then com.verbiqo.app.plist. |
| Microsoft Intune | Devices › macOS › Configuration › Create › Templates › Preference file: preference domain com.verbiqo.app, then com.verbiqo.app.plist. |
| Kandji | Library › Add new › Custom Profile: upload Verbiqo.mobileconfig. |
| One Mac | Double-click Verbiqo.mobileconfig, then System Settings › General › Device Management › Install. |
Push the settings to Windows PCs
| Tool | How |
|---|---|
| Group Policy | Copy 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 Intune | Devices › 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 PC | reg 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.
| Tool | How |
|---|---|
| Group Policy | Computer 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
sendApiKeytofalse. - 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
sendApiKeytotrue: 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.
One policy per group
Sign a policy for each, with its own
policyIdand the same key. For exampleacme.dbaallowing"pg"and"mysql", andacme.supportallowing only"prom", each with its own features and limits.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.jsonandpolicy-support.json.One settings file per group
Each group’s
settings.jsonnames its policy file inpolicyPathand pins its ID inpolicyId, so a computer cannot be pointed at another group’s file. Build each withverbiqo policy settings build.Target each group
Assign each group’s files to it in your tool.
| Tool | Target a group of computers | Target people |
|---|---|---|
| Jamf Pro | Scope the profile to a smart or static computer group | A profile at User level, scoped to users or user groups |
| Microsoft Intune | Assign the profile or script to a device group | Assign it to an Entra ID user group |
| Kandji | Put the profile in the group’s blueprint | — |
| Group Policy | Link the GPO to the group’s OU, or filter it by a security group: Computer Configuration | The 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
extensionsEnabledtofalsein that group’s settings, which hides Extensions entirely. - To check a computer:
verbiqo policy checkon 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.
Copy the licence file
Put your
.verbiqo-licensefile in the protected folder with the other files:/Library/Application Support/Verbiqo/team.verbiqo-licenseon a Mac,C:\ProgramData\Verbiqo\team.verbiqo-licenseon Windows (how).Name it in the settings
Add
licensePathtosettings.jsonand build the files as above:"licensePath": { "mac": "/Library/Application Support/Verbiqo/team.verbiqo-license", "windows": "C:\\ProgramData\\Verbiqo\\team.verbiqo-license" }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:
Each computer is listed by its name on the licence (its computer name unless changed, orverbiqo licence seats team.verbiqo-license verbiqo licence free team.verbiqo-license hw-1234abcddeviceLabelabove), 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 freeafter 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