Documentation

Connect your first site

About two minutes, most of it installing a plugin.

  1. Sign in dash.portculliswp.com — enter your email, open the link. No password. First sign-in creates your account and your organization.
  2. Install the plugin on your site Download the .zip, then in WordPress: Plugins → Add New → Upload Plugin → Activate.
  3. Run the connect wizard In the dashboard, Connect a site. Type the domain, click through, approve in your own WordPress admin. You land back here connected.

Before you start

Your site needs three things, and the wizard checks all three for you:

  • You administer it — the last step happens in its WordPress admin.
  • It answers on public HTTPS — internal, loopback and private-range addresses are refused.
  • It has the WordPress Abilities API — in core from WordPress 7.0, or the standalone Abilities API plugin on older versions.

On the Portcullis side you need an admin role in your organization. A plain member can use the fleet but not add to it.

Add a second factor now, not later

Under Settings → Security: an authenticator app (plus ten single-use recovery codes, shown once) or a passkey.

Disconnecting a site, changing what a site allows, deleting the organization, changing a member's access, and bulk writes across more than 25 sites all require a factor proved in the last five minutes. An account with no factor enrolled is refused outright — so this is the difference between doing it now and being blocked later.

A passkey here is a second factor, not a way in on its own — the emailed link always comes first.

What the wizard is doing

Three steps: Site → Approve → Done.

Site

Type the domain. Portcullis probes it as you type and reports which of the three prerequisites it found. Next stays disabled until all three pass, so you can't connect a site that would be unable to run anything. If the plugin is missing, the install steps appear inline with a re-check link.

Approve

Continue mints a single-use enrollment token — valid one hour, pinned to the exact site you just probed — and sends you to the Portcullis page in your own WordPress admin. That page names the organization the site would answer to and asks you to confirm. Click Enroll this site.

Done

You land back in the dashboard and the site appears in your fleet. A screenshot and the site's public metadata fill in a moment later.

What your site gives up: nothing

The plugin is a verifier, not a keyholder. It stores no password and no secret — only Portcullis's public key — and checks each incoming request's signature against that key on its own, with no callback to us.

Enrollment hands the site public facts only: which issuer to trust, its own address, the URL of the public verification keys, the agent account name, and the approved-action list. There is nothing in that handover worth stealing.

The plugin also creates a dedicated least-privilege agent account. Agents act as that account and nothing else. It has no password login, and admin-equivalent WordPress capabilities are stripped from it.

Your new site can do almost nothing

The wizard suggests two read-only actions — basic site information, and a non-identifying fingerprint used to notice drift — pre-ticked, so the fleet view has something to show. You confirm them as you connect, and unticking both is a real choice: the site connects with nothing approved at all. Everything else — every other read, diagnostic and write — is off until a human turns it on.

That's the product, not a default to work around. See What AI can do.

Connecting a lot of sites

The wizard has a bulk door: paste or upload up to 200 domains and Portcullis probes them all, tracking each one's state so you can work the list.

Each site is still approved individually, and that isn't a shortcoming — the approval happens inside each site's WordPress admin, which is what proves you control it. Bulk onboarding removes the bookkeeping, not the consent.

If something goes wrong

The site says "Pending verification"

Portcullis stored the connection but couldn't confirm control of the site during enrollment — often just a slow first response on a freshly-created site. Until it verifies, no agent can reach it and it won't appear to an AI client. Re-enrol from the plugin page to retry.

The probe found the site but not the plugin, or not the Abilities API

Install or activate the companion plugin and click re-check. If the plugin is there but the Abilities API isn't, update WordPress to 7.0 or later, or install the standalone Abilities API plugin — without it there is nothing for Portcullis to run.

Adding a site was refused

You're at your plan's site limit. Re-connecting a site you already have — to rotate its keys and agent account, or after moving it — is not counted again.

Signing out on one device signed me out everywhere

It does, deliberately. Sessions are stateless signed tokens with no per-device list, so signing out invalidates every session on your account. Sessions last 7 days, and the dashboard raises a "Still there?" prompt after 30 minutes idle before signing you out.

Enrolling or removing a sign-in factor also ends every other session — that's exactly the moment someone acts on "my session may have been copied."

Next: Connect your AI client.

Stuck? Email hello@portculliswp.com.