AI for your hosting
Every role — administrator, reseller and customer — can bring their own AI to the panel, in two ways:
| What it is | Where | |
|---|---|---|
| AI connection (MCP) | your own AI app — Claude, Cursor, Gemini CLI, VS Code, Windsurf… — talks to your hosting | AI access |
| AI assistant | a chat inside the panel, on your own AI key from Claude, OpenAI, Gemini, Grok or any OpenAI-compatible provider | AI assistant |
Both can do exactly the same things and no more: they look around freely, and change only what the switches you tick allow. Neither can delete an account or a website, see or set a password, change two-factor sign-in or run commands — that list is fixed in the panel's code, for the administrator's AI too.
The server pays for nothing: your AI app or your own key does the thinking.
Switching it on (administrator)
On Accounts › AI access:
- Tick AI access on this server. Off closes everything at once.
- Tick Resellers if resellers may use AI (with their plan's switch).
- Under Per plan, turn on AI connections and/or AI assistant for the plans that include them. Both are off for every plan until you turn them on.
Make an AI connection
- Open AI access and press New AI connection.
- Name it (the app or computer it is for), choose when it stops working, and tick only what it may change. Leave just Look around if you only want answers.
- Optional, recommended: limit it to your own computer's IP address.
- Press Create connection. The address and the key are shown once — copy the key now. The panel keeps only a hash of it; a lost key is revoked and replaced.
A reseller's connection can reach its own hosting only, all its customers, or the customers it picks. A customer's reaches its own account only.
Add it to your AI app
The panel shows each app's setup with your address and key filled in. Replace
YOUR_KEY below with your key and https://your-panel:2304/mcp with the
address shown.
Claude Code — run once:
claude mcp add --transport http bhpanel https://your-panel:2304/mcp --header "Authorization: Bearer YOUR_KEY"
Cursor — ~/.cursor/mcp.json:
{
"mcpServers": {
"bhpanel": {
"url": "https://your-panel:2304/mcp",
"headers": { "Authorization": "Bearer YOUR_KEY" }
}
}
}
Gemini CLI — run once:
gemini mcp add --transport http --header "Authorization: Bearer YOUR_KEY" bhpanel https://your-panel:2304/mcp
Claude Desktop — Settings › Developer › Edit Config, add to
claude_desktop_config.json (needs Node.js), then restart Claude:
{
"mcpServers": {
"bhpanel": {
"command": "npx",
"args": ["mcp-remote", "https://your-panel:2304/mcp", "--transport", "http-only",
"--header", "Authorization:${AUTH_HEADER}"],
"env": { "AUTH_HEADER": "Bearer YOUR_KEY" }
}
}
}
VS Code (Copilot) — .vscode/mcp.json; VS Code asks for the key once and
keeps it out of the file:
{
"inputs": [{ "type": "promptString", "id": "bhpanel-key", "description": "BHPanel AI key", "password": true }],
"servers": {
"bhpanel": {
"type": "http",
"url": "https://your-panel:2304/mcp",
"headers": { "Authorization": "Bearer ${input:bhpanel-key}" }
}
}
}
Google Antigravity and Windsurf / Devin take the same block as Cursor,
with serverUrl in place of url.
Apps that sign in: ChatGPT, the Grok app
Some apps connect only through their own sign-in (OAuth), never with a pasted key. The administrator allows this once: AI access › AI apps can sign in (off by default).
- In the app, add a connector (a custom MCP server) with your panel's MCP
address,
https://your-panel:2304/mcp, and choose OAuth. - The app opens a page of your panel: choose I am a customer or I am the administrator or a reseller, and sign in.
- Tick what the app may do and how long it may, then press Allow.
It becomes an AI connection like any other - the same switches, limits and log, and Revoke on the AI access page. The panel shows where the app returns to; allow it only if you started the connection yourself.
For app makers: the panel follows the MCP authorization spec - protected
resource metadata at /.well-known/oauth-protected-resource/mcp, the
authorization code grant with PKCE (S256) for public clients, client ID
metadata documents or dynamic registration, exact redirect addresses. The
access token is the connection's key; there is no refresh token.
Then ask in your own words: "why is example.com slow?", "which WordPress plugins need updating?", "is my email DNS set up right?"
The API under it
An AI connection speaks MCP (Streamable HTTP, JSON-RPC 2.0) at one address,
over HTTPS only, with the key in the Authorization header on every request:
curl -s https://your-panel:2304/mcp \
-H 'Authorization: Bearer YOUR_KEY' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Each tool is one panel action, and the panel decides on every request what the key may do. Too many requests a minute are answered "slow down". Requests from a web page are refused, so a site cannot drive your AI through your browser.
The AI assistant
- Open AI assistant (shown when your plan includes it).
- Under Your AI key: choose the provider, paste an API key from it, and choose a model — Read the model list fills the list from your provider.
- Optional: a monthly limit in tokens. It stops there and says so. Your provider bills you directly.
- Tick what it may suggest changing, and ask.
Looking around happens at once. Every change is shown with Apply and No, and runs only when you press Apply.
The key is kept encrypted on the server, sent only to the provider you chose, and never shown again in full. Changing the provider asks for the key again. Remove key (under Key settings) deletes it, your settings and every chat.
The assistant PIN. Before first use you set a PIN (6 to 12 digits) or a password. Your AI key and every chat are encrypted with it on the server, and only a sign-in that enters it opens them - for 30 minutes of use at a time; Lock now closes it sooner. Not even "Log in as" can open them. A password is stronger than a PIN. Forgot PIN emails you a link that erases the locked key and chats so you can start again: nothing can recover them.
Each administrator login has its own assistant - its own key, PIN and chats. The one all administrators shared in 0.2.89 goes to the first administrator who opens the AI assistant page.
Your chats are listed on the left of the page, newest first: New chat starts another, and each can be opened again or deleted, or all at once. A chat is kept for 30 days after it was last used, on the server only.
The chat button: while the assistant is part of your plan, a round button sits at the bottom right of every panel page. It opens the same assistant in a small window, so you can ask while you work - the same chats as the page, and the page shows them too. The administrator can switch the button off for administrators, resellers or customers on the AI access page.
"Other" takes any OpenAI-compatible address (OpenRouter, a company gateway…),
https:// only. For resellers and customers it may not point at the server
itself or a private network; the administrator's may (an Ollama on the server).
What your AI did, and Undo
Every request an AI makes — the assistant's included — is listed under What your AI did on the AI access page, refusals too.
Turn Undo on there (it is off by default) to be able to put back, for 7 days, what your AI changed: a file it edited, moved or deleted, a WordPress plugin, a cron job, a DNS record, a forwarder or auto-reply, PHP version, Always HTTPS, a redirect, the page cache setting, and — for the administrator — a firewall block.
Undo refuses when the thing was changed again since, so it never throws your own later edit away. It does not take back what was created (a mailbox, a database, a website — delete those with a click), a changed mailbox password (the old one is never kept), or what already happened elsewhere (an email sent, a backup, a restart). Turning Undo off removes the copies it kept.
Staying safe
- Text inside your files, logs, emails and pages is data to the AI, never instructions — but an AI can still be misled. Read before you press Apply.
- Files an AI reads have passwords, keys and salts masked. This is best effort: do not keep secrets in files you let it read.
- Give each app its own connection, tick only what it needs, limit it to your IP, and revoke what you no longer use.