enterprise-ready · self-hosted · mcp-controlled

App
Crane

The enterprise AI applications platform — driven by your AI agent over MCP. Bring Claude Code, Cursor, Codex, or any MCP client. AppCrane handles deploy, env, GitHub branches, rollback, and per-user visibility on your own server.

$ curl -fsSL https://raw.githubusercontent.com/gitayg/appCrane/main/install.sh | sudo bash
View on GitHub How it works ↓

No spam. Weekly changelog only.

appcrane.example.com/apps
AppCrane
Apps
Server
Users
Settings
4
Running apps
8 / 8
Environments live
3
Online now
2
AI proposals pending
bookclub
bookclub.example.com
prod
sandbox
SL
MK
dashboard
dashboard.example.com
deploying…
sandbox
AR
api-gateway
api.example.com
prod
sandbox
SL
auth-service
auth.example.com
prod
sandbox
MK
AR
// capabilities

Everything you need
to ship.

A full deployment platform on your own machine. No monthly fees, no vendor lock-in, no cloud bill surprises.

Multi-app on one server
Run as many apps as your server can handle. Each gets its own Docker container, isolated ports, and automatic Caddy routing.
Dual environments
Every app gets production and sandbox, always-on. Test on sandbox, promote to production in one command.
Auto-HTTPS via Caddy
Caddy handles TLS certificates automatically via Let's Encrypt. No manual cert work.
GitHub webhook auto-deploy
Push to main and sandbox deploys automatically. HMAC-verified webhooks keep the pipeline secure.
Rollback in seconds
Symlink-based releases keep the last 5 builds. Rolling back is a symlink swap — instant, no rebuild.
Zero-downtime deploys
Start new → health check → swap → drain old. Production stays up throughout the deploy cycle.
Encrypted env vars
AES-256-GCM encrypted at rest. Platform Owner is hard-walled from reading them at middleware level — only the App Owner (and the roles they grant access to) can see secrets.
Health checks + alerts
Pings /api/health every 30s. Auto-restarts on failure. Sends email when apps go down or recover.
MCP server — bring your own agent
Drop the in-portal coding session. AppCrane exposes deploy, env, logs, rollback, and PR ops as MCP tools. Connect Claude Code, Cursor, Codex CLI, or any MCP client — same agent, your local context, your keys.
Docker container isolation
Every app runs in its own Docker container. Full process isolation — no shared dependencies, no runaway processes affecting neighbors.
Enterprise SSO
SAML 2.0, OIDC, and SCIM provisioning built in. Connect to Okta, Azure AD, or any identity provider. Automatic user sync.
Real-time presence
See who's live on each app, which environment they're viewing, and when they last deployed — team awareness without Slack threads.
// agent-controlled

Bring your
own agent.

No more in-portal coding sandbox. AppCrane exposes its operations as MCP tools — deploy, env, logs, rollback, branch, PR. Connect the agent you already use, keep your local context and your keys, and drive your fleet from one place.

Claude Code Cursor Codex CLI Claude Desktop — any MCP client — AppCrane MCP deploy env GitHub logs
Multi-platform agent support
Connect Claude Code, Claude Desktop, Cursor, Codex CLI, or any MCP-capable client. AppCrane is agent-agnostic by design — pick the assistant you already pay for and the one your team already knows. Switch agents without losing your deployment workflow.
Per-user visibility
Every MCP call is bound to the user who issued it. The dashboard shows who deployed what, from which agent, against which env — with their token, scoped to apps they own. The audit trail is per-user, not per-token, so you always know which person was behind a change.
GitHub-native flow
Agent edits land on real branches. The MCP `branch` tool creates `agent/{slug}-{name}`; `commit` and `push` go through normal git; `open_pr` opens a PR with a generated summary. Push to main still triggers the existing webhook auto-deploy. No bypass paths — AppCrane uses GitHub the way your team already does.
Less to build, less to maintain
No internal coding container, no in-portal terminal, no bespoke per-agent integration. AppCrane focuses on what it does best — deploy, isolate, audit — and lets the AI ecosystem do the agent part. Smaller surface area, faster iteration, no vendor lock to a single AI provider.
// vs the alternatives

Why teams choose
AppCrane.

Self-hosted without the trade-offs. Enterprise features without the SaaS bill.

Full comparison: AppCrane vs Railway → Full comparison: AppCrane vs Coolify →
AppCrane Railway Coolify
Price Free (self-hosted) $5–20 / app / mo Free (self-hosted)
Data ownership Your server Railway cloud Your server
Docker isolation ✓ per app
Enterprise SSO ✓ SAML / OIDC / SCIM
Agent control protocol ✓ MCP — any client
Real-time presence
Dual environments ✓ built-in Manual Manual
Auto-HTTPS ✓ Caddy ✓ Caddy
Zero-downtime deploy Partial
Vendor lock-in None High None
Open source MIT Apache 2
// workflow

Deploy in five steps.

From fresh Ubuntu server to running app in under ten minutes.

01
Install
Run the one-liner. Installs Node 20, Docker, Caddy, AppCrane, and creates an admin key.
02
Create app
crane app create with a slug, domain, and GitHub URL. Allocates ports and wires up routing.
03
Set env vars
crane env set or the dashboard. Encrypted at rest. Separate values per environment.
04
Deploy
crane deploy --env sandbox. Pulls, builds, starts, health-checks, and swaps the symlink.
05
Promote
crane promote. Copies code from sandbox to production with zero downtime.
crane — deploy workflow
# Create the app
$ crane app create --name BookClub --slug bookclub --repo https://github.com/org/bookclub
✓ App bookclub created. Available at https://crane.glick.run/bookclub
# Set env vars (encrypted, sandbox only)
$ crane env set bookclub --env sandbox DATABASE_URL=postgres://... API_KEY=sk-xxx
✓ 2 vars set for bookclub/sandbox
# Deploy to sandbox, check health, promote
$ crane deploy bookclub --env sandbox
✓ Deploy #12 live — v1.4.2 — 23s
$ crane promote bookclub
✓ bookclub/sandbox → production (zero downtime)
# Something wrong? Rollback takes 1s
$ crane rollback bookclub --env production
✓ Rolled back to v1.4.1
// security model

Four roles.
One hard wall.

Platform Owner can never read app secrets — enforced at middleware, not by policy. The other three roles are app-scoped and configurable per app: App Owner decides exactly what App Admins and App Users can do inside their app.

Platform Owner Operates the server
  • Creates and deletes apps
  • Manages platform-wide users and SSO
  • Views server health (CPU, RAM, disk)
  • Configures branding and global settings
  • Cannot read env vars or /data/
  • Cannot deploy, rollback, or promote
  • Cannot configure or view per-app settings
Hard wall — enforced at middleware level. Env vars are AES-256-GCM encrypted with a key only on-disk. This is the one boundary the platform never crosses, even with shell access to the server.
App Owner Owns a specific app, end to end
  • Assigns App Admins and App Users to the app
  • Configures what each role can do (per-app permission grid)
  • Full env var read and write
  • Deploy, rollback, promote (sandbox → production)
  • All app settings, backups, and audit log
  • Transfers or deletes the app
Owner sets the per-app permission grid in Settings → Roles. Defaults below; everything except promote-to-production can be opened up or locked down.
App Admin Configures the app's settings
  • Configures health checks, webhooks, integrations
  • Manages app-level settings and metadata
  • Views logs and audit trail
  • Env var read/write — configurable
  • Deploy and rollback — configurable
  • Backup create / restore — configurable
  • Cannot promote sandbox → production
App User Day-to-day developer access
  • Deploys to sandbox
  • Views logs for own deploys
  • Read non-secret env — configurable
  • Write env / deploy to production — configurable
  • Rollback — configurable
  • Cannot access other apps
  • Cannot edit settings or assign roles
default capability configurable per app × not allowed (or hard-walled)
The hard wall is non-negotiable
The Platform Owner role is what the platform operates with — and it has zero read access to encrypted env vars or app data, by middleware enforcement. Even direct database access on the server would only return ciphertext; the encryption key lives in .env on disk and is never in the code path the Platform Owner controls. App Owner is the only role that grants access to secrets, and they grant it per-app, per-role, in the dashboard.
// built with

Boring tech.
Reliable stack.

Docker isolation meets proven Linux tooling. No Kubernetes, no cloud sprawl — just a reliable stack running on your own server.

Node.js 20
Express 5
SQLite
Docker
Caddy 2
Commander.js
AES-256-GCM
SAML / OIDC / SCIM
MCP
Let's Encrypt
Ubuntu 22.04+
// faq

Common questions.

Is AppCrane free?

Yes. AppCrane is open source and free to self-host. You pay for your own server — typically $5–20/month on any VPS provider — and nothing else. There is no SaaS fee, no per-seat charge, and no usage billing.

How is AppCrane different from Railway or Coolify?

Railway is a managed cloud platform — your code and data live on their infrastructure. AppCrane runs on your own server, so you own everything. Compared to Coolify, AppCrane adds enterprise SSO (SAML/OIDC/SCIM), an MCP server so any AI agent can drive deploys directly, and real-time team presence — features aimed at teams rather than solo developers.

Do I need Kubernetes or container orchestration experience?

No. AppCrane uses Docker for process isolation but abstracts it entirely — you never write a Dockerfile or manage containers directly. There is no Kubernetes, no Helm, no cluster to maintain. If you can SSH into a Ubuntu server, you can run AppCrane.

Does AppCrane work with my AI agent?

Yes — if it speaks MCP, it works. AppCrane runs an MCP server that exposes deploy, env, logs, rollback, branch, commit, push, and PR operations as tools. Connect Claude Code, Claude Desktop, Cursor, Codex CLI, or any MCP-compatible client by adding AppCrane's MCP endpoint and your user token. There is no in-portal coding sandbox to learn — your agent stays in the environment you already use.

How does AppCrane track who did what?

Every MCP token is bound to a specific user. When an agent calls a tool, AppCrane records the user, the agent's client identifier, the app, the env, the action, and the result. The dashboard shows per-user activity in real time and per-user history in the audit log — so you always know which person was behind a deploy, even when an AI did the typing.

How does the GitHub integration work?

Agent edits go through real git, not a side channel. The MCP branch tool creates a feature branch (agent/{slug}-{name}); commit and push use your repo's normal credentials; open_pr opens a PR with a generated summary. Push to main still triggers the existing HMAC-verified webhook auto-deploy. AppCrane never bypasses GitHub — your reviews, branch protection rules, and CI all apply.

How does Enterprise SSO work?

AppCrane supports SAML 2.0, OIDC, and SCIM provisioning. Connect it to Okta, Azure AD, Google Workspace, or any standards-compliant identity provider. SCIM handles automatic user provisioning and deprovisioning — when you remove someone from your IdP, their AppCrane access is revoked automatically.

Can the Platform Owner read my app's secrets?

No. Environment variables are AES-256-GCM encrypted at rest and the Platform Owner role is hard-walled from reading them at the middleware level — not by convention, not by policy. Only the App Owner (and the App Admins / App Users they explicitly grant via the per-app permission grid) can read or write app secrets. The hard wall holds even with shell access to the server: the encryption key lives in .env on disk, outside the Platform Owner's code path.

How are the four roles different from each other?

Platform Owner operates the server: creates/deletes apps, manages SSO, monitors hardware. Hard-walled from app data. App Owner owns one app end-to-end: assigns App Admins and App Users, configures the per-app permission grid, has full env / deploy / settings access. App Admin handles configuration inside the app: health checks, webhooks, metadata. App User is day-to-day developer access: deploy to sandbox, view logs. App Admin and App User capabilities are configurable per app — the App Owner decides exactly what each can do.

Can I customize what App Admin and App User can do, per app?

Yes. Every app has a Settings → Roles permission grid where the App Owner toggles which capabilities are granted to App Admins and App Users on that app — env var access, deploy targets, rollback, backup operations, and so on. Different apps in the same organization can run different policies. The only setting that can't be changed is the Platform Owner's middleware boundary — that's hard-walled in code.

Ready to
deploy?

One command. Your server. Your apps.

$ curl -fsSL https://raw.githubusercontent.com/gitayg/appCrane/main/install.sh | sudo bash
Star on GitHub Read the docs ↗
AppCrane — MIT License