Handlify deploys the apps Claude builds for you — straight to Qiscus infrastructure. Ask in a Claude chat, or use this dashboard. No server to manage, no Git required, no ops queue.
Every app gets a live https://<id>.handlify.qiscus.io URL. You can gate who may open it (private / your team / anyone), attach a custom domain, set env secrets, and redeploy — all from chat or the dashboard.
You: build a countdown landing page for our Q3 hackathon with a signup form,
and deploy it.
Claude uses deploy_project under the hood and replies with the URL. Iterate by asking for changes — it redeploys at the same URL.
The most common path. Claude writes the files and deploys them directly — no git repo needed. Static sites (HTML/CSS/JS) or Node apps. If the app needs a database, a managed PostgreSQL is provisioned and its DATABASE_URL injected automatically (credentials never shown).
Ask Claude to import the repo — give it the public https:// URL and it deploys via create_app_from_repo. Also works from the Handlify CLI.
Add an SSH deploy key on the Deploy keys page, put its public half as a read-only deploy key on the repo, then ask Claude to deploy the SSH URL. Multi-service repos deploy via docker-compose. Repos on the internal Forgejo use a shared deploy key — no per-repo setup needed.
Open an app from Apps to manage it. From the dashboard you can:
Or from chat: get_app, get_logs, restart_app, deploy_app, update_project, delete_project.
set_keep_awake.Control who can open an app's URL. Change it from the app's Access card, or from chat with set_access / get_access. Changes take effect immediately — no redeploy.
qiscus.com).@qiscus.com account.This is not the same as owning the app. An app has exactly ONE owner — the only one who can deploy, configure or delete it. Adding someone to team lets them open the URL, nothing more. To let someone else deploy it, transfer it: the Ownership card, transfer_owner in chat, or handlify transfer <uuid> <email>.
You: make gate-demo-b1c229 accessible only to andi@qiscus.com and me
On the app's Custom domain card: add a domain you own, point its DNS (a CNAME or A record) at handlify.qiscus.io, click Check DNS, then Apply to this app. The app then serves on your domain alongside the auto-generated one.
Beyond the Claude.ai connector (which uses Google sign-in), you can call this MCP from a CLI or script with a personal API key. Generate one in Settings → API keys, then point a client at the endpoint with a Bearer header:
claude mcp add --transport http qiscus-builder \ https://qiscus-coolify-mcp.qiscus.io/mcp \ --header "Authorization: Bearer <your-key>"
[mcp_servers.qiscus-builder] command = "npx" args = ["-y", "mcp-remote", "https://qiscus-coolify-mcp.qiscus.io/mcp", "--header", "Authorization: Bearer <your-key>"]
{
"mcpServers": {
"qiscus-builder": { "url": "https://qiscus-coolify-mcp.qiscus.io/mcp", "headers": { "Authorization": "Bearer <your-key>" } }
}
}
Keys are scoped like the dashboard (only your own apps) and revocable anytime.
list_apps / get_app | List your apps / one app's details. |
get_logs / list_deployments_for_app | Container logs / deploy history. |
deploy_project | Deploy code Claude generated (static/node, optional DB). |
create_app_from_repo / deploy_private_repo | Deploy from a public / private git repo. |
update_project / deploy_app / restart_app | Redeploy / trigger / restart. |
get_access / set_access | Read / set who can open a URL. |
manage_secrets | Get the dashboard link to set env secrets out-of-band. |
transfer_owner | Hand an app to another user — one owner per app, and the owner is who may deploy it (owner/admin). |
delete_project | Delete an app (owner/admin). |
You only ever see and act on your own apps (admins see all). Roles are per-email.