Home
For IT teams

Roll Paul’s Dashboard out to a whole office.

A silent installer, a command line that imports a prepared setup or exports a backup, and a read-only policy file that can set company defaults, lock settings and switch features off. Everything here works from a script, and nothing needs a server, an account or an agent on the machine.

A policy can never switch on anything that watches people.

It can turn features off and lock settings. It cannot turn on usage analytics, the connection history log, clipboard history, screen capture or any option that records, and it has no way to read anyone’s data.

  • An entry that tries to switch one of these on is ignored, with a warning in the log.
  • There is no policy key for a reporting address, an upload, a webhook or an integration. Nothing flows back.
  • Each person’s dashboard stays in their own user folder.
Silent install

Install without anyone clicking

The installer is pauls-dashboard-setup-X.Y.Z.exe from the download. It installs per user unless you pass /allusers. With a business policy, always install for all users: a per-user copy sits in a folder the user owns, so they could swap the app’s files for ones that ignore the policy. Either way each person’s dashboard is their own, so a setup import runs once in each user’s session (a logon script, Intune in user context, or a task at logon), while a policy file is per machine.

/S
Silent: no windows and no questions.
/currentuser
Install for the user running the installer. This is the default, and needs no admin rights.
/allusers
Install for every user of the machine, in Program Files. Needs an elevated prompt. Use this on any machine with a business policy.
/D=C:\Path\To\Folder
The install folder. It must be the last argument and must not be quoted, even with spaces in it.
Command line

Import a prepared setup, or back one up

Set up one dashboard the way you want it, export it, and import it on every machine. If the app is already running in the tray, the command hands the job to it and waits for the answer. Results go to standard output and errors to standard error.

"Paul's Dashboard.exe" [--import <file> | --import-replace <file>] [--export <file>]
                   [--include-secrets] [--include-media]
                   [--password <pw> | --password-file <path>]
                   [--quit-after] [--help-cli]
--import <file>
Merge a backup into the current dashboard: its screens and widgets are added, and its settings win.
--import-replace <file>
Replace the dashboard with the backup.
--export <file>
Write a backup. API keys, tokens, the lock password and clipboard history stay out unless you add --include-secrets.
--include-secrets
Include keys, tokens, Secrets widget values, the lock password hash and clipboard history. Use it with a password.
--include-media
Embed photos, recordings, GIFs and custom sounds (up to 300 MB).
--password-file <path>
Encrypt or open the backup with the password on the first line of a file. --password <pw> and the PAULS_DASHBOARD_BACKUP_PASSWORD variable work too.
--quit-after
Do the job and exit instead of opening the dashboard. Use it in scripts so the exit code is the job’s.
--help-cli
Print the flags and exit codes.

Exit codes

0
Done.
1
Failed for another reason.
2
Bad or conflicting flags.
3
The backup is encrypted and the password is missing or wrong. Nothing was imported.
4
File missing, unreadable or not a dashboard backup, the export could not be written, or the password file is missing or empty.
5
The app is running but did not answer.
6
Your organization’s policy does not allow it: export or import is off, a password is required, or secrets are not allowed in a backup. Nothing was written.

The app is a windowed program, so PowerShell does not wait for it on its own. Use Start-Process -Wait -PassThru, as in this example:

$installer = "C:\Deploy\pauls-dashboard-setup-3.1.0.exe"
$exe = Join-Path $env:ProgramFiles "Paul's Dashboard\Paul's Dashboard.exe"

# 1. Silent machine-wide install (elevated, once per machine)
Start-Process -FilePath $installer -ArgumentList '/S /allusers' -Wait

# 2. In each user's session: import a prepared, password-protected setup
$env:PAULS_DASHBOARD_BACKUP_PASSWORD = (Get-Secret -Name 'PaulsDashboardConfig' -AsPlainText)
$job = Start-Process -FilePath $exe -Wait -PassThru `
  -ArgumentList '--import-replace', '"C:\Deploy\dashboard-config.json"', '--quit-after'
Remove-Item Env:\PAULS_DASHBOARD_BACKUP_PASSWORD
if ($job.ExitCode -ne 0) { throw "Import failed with exit code $($job.ExitCode)" }
Encrypted backups

A password on every backup that carries keys

In the app, Settings > General > Export data has an Encrypt with a password switch, and the app suggests it whenever API keys are included. The command line encrypts whenever it is given a password. The key comes from the password through scrypt, and the backup is compressed and sealed with AES-256-GCM, so a wrong password and a tampered file both fail before anything is imported. Plain exports and every older backup still import. A forgotten password cannot be recovered.

Business policy

One read-only file sets the rules

Put a policy.json where only admins can write, and the app reads it once at startup. Anything it does not recognise is ignored with a warning and the rest still applies, and Settings > About shows exactly what the policy controls.

  • Windows%ProgramData%\Paul's Dashboard\policy.json
  • Folder rightswritable by admins only, readable by everyone (see the PowerShell lines in the guide)
defaults
Company defaults for appearance, the window, notifications, the dock and the global shortcut. Applied once; people can change them unless they are locked.
locked
Settings pinned to their default, such as the whole theme or one setting. They show greyed out with a lock and “Managed by your organization”, and no import can change them.
widgetDefaults
Default options per widget type for new widgets, for example a 24 hour clock.
lockedWidgetOptions
Widget options pinned to those defaults, on new and existing widgets.
hiddenWidgets
Widgets removed from Add Widget. Ones already on a dashboard say they were turned off and keep their data.
disabledFeatures
Switch off AI, update checks, the feedback form, every widget that uses the internet, usage analytics, clipboard history, the connection history log or screen capture. Four more decide where data can go: workflows (none run or can be made), integrations (no new or changed connections), runPrograms (no launching apps, dev servers, Docker controls, webhooks or programs from file widgets) and aiCustomEndpoints (only the built-in AI providers). supportPrompts hides the Support buttons and the one-time support reminder.
backups
allowExport, allowImport, requireEncryption and allowSecretsInExport: switch export or import off, insist on a password, or keep API keys and tokens out of every backup. Applies in Settings, the File menu and the command line.
allowedHosts
The only hosts the app may contact, like "*.contoso.com". Every other request from its windows and its background process is refused. Programs the dashboard starts and links opened in a browser are not covered; use a firewall for those.
initialLayout
The screens and widgets a brand-new install starts with.
organization, contact, message
Shown in Settings > About under “Managed by your organization”, with everything the policy controls and anything it ignored.
{
  "$schema": "https://paulsdashboard.com/schemas/policy.schema.json",
  "version": 1,
  "organization": "Contoso IT",
  "contact": "helpdesk@contoso.example",
  "defaults": {
    "preferences": { "backgroundColor": "#0f172a", "accentColor": "#f97316" },
    "globalHotkey": "CommandOrControl+Shift+D"
  },
  "locked": ["theme", "windowAppearance.alwaysOnTop"],
  "widgetDefaults": { "clock": { "use24Hour": true } },
  "lockedWidgetOptions": { "clock": ["use24Hour"] },
  "hiddenWidgets": ["emoji-chess"],
  "disabledFeatures": ["feedback", "analytics"]
}
Security review

What your security team will ask

Every window is sandboxed and can only show the app itself. Keys and tokens are encrypted with Windows DPAPI, programs and commands ask in a Windows dialog before they first run, and update checks can be switched off by policy. The security overview covers the architecture, data storage, network use, update integrity and how to report a vulnerability.

Network

Every host the app can reach, and what turns it off

The full list, checked against the code, is the network map in the deployment guide. With allowedHosts set, the app refuses anything else from both its windows and its background process, so a changed page cannot get around it.

us.aptabase.com
Anonymous usage analytics. On by default from launch; off with the Settings > About switch or disabledFeatures "analytics".
paulsdashboard.com, github.com
Update checks and the update download, off with "updateChecks". The feedback form posts to paulsdashboard.com only when someone sends it, off with "feedback".
fonts.googleapis.com, fonts.gstatic.com
Theme and widget fonts other than the default, Inter, which ships with the app. Lock the fonts to System Default to stop it.
ip-api.com (plain HTTP)
Country of each connection in the Connections widget, and "Use my location". Leave it off allowedHosts to stop it.
1.1.1.1, 8.8.8.8, www.microsoft.com
An “am I online?” check when an uptime or status check fails.
Widget services
Weather (open-meteo.com), stocks (Yahoo Finance), crypto (CoinGecko), news (Google News, NewsAPI), tides, currency, service status pages, Slack. Off with "networkWidgets".
AI providers
api.openai.com, api.anthropic.com, generativelanguage.googleapis.com, api.x.ai, openrouter.ai, api.elevenlabs.io. Off with "ai"; "aiCustomEndpoints" keeps AI to exactly these.
Hosts people choose
RSS feeds, API connections, uptime targets, webhooks, workflow steps, image URLs. allowedHosts holds them all to your list.

Try it on one machine first

Put a draft policy in the policy folder on one test PC and restart the app: Settings > About shows what it applied and what it ignored.

The free licence covers personal, non-commercial use. Using it at a company needs a commercial licence, available on request: get in touch through pauldalton.ai.

Download for Windows