Deploy and share any app.

Pando runs on your own server and hosts the apps your team builds, including the ones written with AI. Point it at a source and it builds the app, gives it an address and controls who can open it.

Open source under AGPL-3.0

A safe place for AI-built apps

People across your company are building their own tools with AI assistants. IT usually has nowhere safe to host them and no time to review each one, so they end up on laptops and personal cloud accounts.

Pando gives those apps somewhere to run, with the checks already in place.

Automated security review

Every build is scanned for vulnerable dependencies, leaked secrets and misconfiguration. Apps below your minimum score don’t deploy.

Guardrails

Host policy decides where apps can come from, what they can reach on the network, whether they can be public and which actions are turned off.

Isolation

Each app runs on its own private network, and builds run in a sandbox with no access to the host.

Sign-in with your provider

Apps sit behind sign-in through Okta, Google or any other OIDC provider, with groups kept in sync over SCIM.

Install

Pando runs with Docker Compose. Clone the repository and start it on the machine that will host your apps.

The CLI is a separate, optional install: brew install bemeek-io/tap/pando

$git clone https://github.com/bemeek-io/pando.git
$cd pando
$docker compose up -d

The console is at http://localhost:8080. The first run prints an admin password to the log.

What happens when you deploy

Every deploy goes through the same steps. Each redeploy runs them again, and you can roll back to any earlier revision. If an app scores below the minimum you set, Pando stops before it runs.

  1. 01SourceA repository, a folder or an image
  2. 02DetectWorks out the build, then a trial run
  3. 03BuildIn a rootless sandbox
  4. 04ScanScored 0 to 100, checked against your minimum
  5. 05RunAs a bundle on a private network
  6. 06ShareAt its own address, behind sign-in

Pando works out how to run your app

Point Pando at a repository, a folder or an image. It reads the source to work out how to build and start the app, then does a trial run in a throwaway container to find the port the app listens on.

Dockerfiles, compose files, static sites and apps in common languages all work without a config file. When Pando can’t work something out, it asks you.

Proposal for notes
Sourcegithub.com/you/notes
DetectedNext.js app on Node.js 20
BuildBuildpack
Startnpm run start
Port3000 · seen during a trial run
NeedsA PostgreSQL database

Should Pando create a PostgreSQL database for this app, or connect to one you already have?

For individuals and teams

Personal use

Host side projects and small tools on a laptop, a home server or a VPS instead of paying a hosting provider for each one.

  • Deploy from a git repository, a local folder or an image
  • Apps stay private until you share them
  • Add Postgres, MySQL or Redis when an app needs one

Team use

Run your company’s internal apps in one place, all under one Pando hostname.

  • SSO with any OIDC provider, and SCIM for provisioning
  • Groups and custom roles
  • Host policy for sources, public access, egress and isolation
  • An audit log of every action

What Pando isn’t built for

Pando is for small services and projects. It isn’t built for critical infrastructure, or for services that need replication, autoscaling or 99.99% uptime. Those are better run on dedicated infrastructure with the usual practices for operating them.

Good fits

  • Hobby and side projects
  • Basic websites
  • Vibe-coded productivity apps built by people at your company

Poor fits

  • Critical infrastructure
  • Services that need replication or autoscaling
  • Anything that needs 99.99% uptime

The console

All your apps on one page, with status, address and last deploy. Open an app for its logs, variables, sharing settings and a terminal.

RunningBuildingFailedStopped

Sign-in for every app

Apps are private by default. All requests go through Pando’s proxy, which checks who the visitor is and whether they’re allowed in.

Your app gets the visitor’s identity in a signed header, X-Pando-Assertion, so it doesn’t need its own login.

Decoded assertion, verified against /.well-known/jwks.json
GET /reports HTTP/1.1
Host: inventory.pando.example.com
X-Pando-Assertion: eyJhbGciOiJFZERTQSJ9…
{
"sub": "usr_01HQ8…",
"email": "[email protected]",
"groups": ["finance"],
"aud": "app_inventory",
"exp": 1790041320
}
Securityinventory
83out of 100 · scanned 3 min ago by Trivy
Critical0
High1
Medium2
Low1
Highlodash 4.17.20 CVE-2021-23337Fixed in 4.17.21

A security score for every app

After each build, Pando scans the app for vulnerable dependencies, leaked secrets and misconfiguration, and gives it a score from 0 to 100.

Set a minimum score in host policy and Pando won’t deploy apps that fall below it. Apps already running get a grace period to fix what was found.

Apps are kept apart

Each app runs as a bundle, which means its containers and the services it needs, like a database, share a private network. Apps can’t reach each other’s networks, and the only way in is through Pando’s proxy.

Builds run in a separate sandbox with no access to the host or to other apps. If something gets into one app, it can’t get to the others.

Pando proxychecks sign-in and access on every request
inventoryprivate network
webexposed
postgresinternal
time-offprivate network
webexposed
workerinternal
redisinternal
handbookprivate network
siteexposed

Use the providers you already have

Pando connects to infrastructure through adapters. Keep the defaults, or use the services you already pay for.

Routing

How traffic reaches Pando

Cloudflare, Traefik

Hosting

Where apps run

AWS, Docker

AI

The model behind Pando’s AI features

Anthropic

Identity

Who can sign in

Any OIDC provider, such as Okta or Google

Scanning

What checks each build

Trivy

Adapters ship as part of Pando. New ones are added by pull request.

Connect Claude Code
$pando login https://pando.example.com
$claude mcp add pando -- pando mcp

Coding agents

Pando includes an MCP server, so an agent like Claude Code can create apps, deploy them and read their logs.

The agent uses your API token and has your permissions. What it does shows up in the audit log under your name. Running commands in containers, reading secrets and changing access aren’t available over MCP.

Also included

  • SSO and SCIM
  • Databases on request
  • Secrets and variables
  • Volumes
  • Logs
  • Container terminal
  • Rollback
  • Backups
  • Resource limits
  • Groups and roles
  • Host policy
  • Audit log
  • CLI
  • HTTP API
See all features

Where the name comes from

Pando is a grove of quaking aspen in central Utah. It looks like a forest, but its trees all grow from one root system and are genetically a single organism. The name is Latin for “I spread.”

The software works the same way. Pando is the root system and each app is a tree. The apps share one installation for sign-in, networking, storage and security, and each one still stands on its own.

38°31′29″N111°45′07″W
Where
Fishlake National Forest, Utah
Area
About 106 acres
Trees
Around 47,000, from one root system

Get started

Pando is open source under AGPL-3.0. The license covers Pando, not the apps you host on it.

For a commercial license, support or managed hosting, see pricing.