Skip to main content

Action Platform

Your platform team: a web app, a CLI and an MCP server on one core.

CLI Web image API image


Every new service costs the same week: scaffold, lint config, CI, versioning, deploy pipeline, IAM. Then the next one drifts from the last. Action Platform turns that week into one command — or one click — and keeps every app on the same rails, in your git host and your cloud account.

Three doors, one core:

Web app Organizations › teams › projects › apps, with roles (owner, admin, deployer, developer, viewer). Create an app from a template or import any repository, connect GitHub / GitLab / Bitbucket, edit platform.toml, open pull requests, cut releases — from a browser. One command to self-host.
CLI pipx install action-platform and the same verbs on your machine: init, branch, pr, release, deploy, rollback, diagnose.
MCP server The same operations as tools for Claude Code, Codex, Cursor — locally, or against your hosted platform after action-platform login.

Self-host in one command

curl -fsSL https://raw.githubusercontent.com/actionplatform/action-platform/master/deploy/install.sh | sudo sh
# with a domain and TLS:
curl -fsSL https://raw.githubusercontent.com/actionplatform/action-platform/master/deploy/install.sh | sudo sh -s -- platform.example.com you@example.com

Installs Docker if needed, generates the secrets, starts Postgres + API + web (+ Traefik with Let's Encrypt when a domain is given) and prints the URL. Open it: first account, first organization, connect a code host — done. Files live in /opt/action-platform; see deploy/ for the compose file and the two Dockerfiles.

Already on Dokploy? Create a Compose service and import deploy/dokploy/template.b64: secrets and domain are generated, Dokploy's Traefik handles TLS. → Self-hosting

Or just the CLI

pipx install action-platform

action-platform init web python fastapi --name "orders" --cloud aws/lambda

Thirty seconds later you have a FastAPI service with tests, lint, CI wired, a SAM template, a least-privilege IAM policy, and a GitHub repo already pushed (--no-push to keep it local).

Why teams pick it

One command, whole lifecycle initreleasedeployrollbackdiagnosedestroy. Same verbs for a Python API on Lambda, a Go service in Docker, a React app on Amplify.
Templates from production, not tutorials Every project template is extracted from a real shipping product. Real layout, real CI, real gotchas already fixed.
Cloud is a layer, not a fork Projects stay cloud-agnostic. --cloud aws/lambda overlays deploy files; swap to docker tomorrow with one command.
Your CI, your account, your git Runs on GitHub Actions, GitLab CI or Jenkins you already have. Repositories on GitHub, GitLab, Bitbucket or any git server, connected with OAuth. Infra lands in your AWS account through OIDC — no long-lived keys, no vendor in the loop.
Governance that ships with the code Git-flow and Conventional Commits enforced by git hooks before a commit exists and by CI on every PR; changelog generated; AGENTS.md for humans and AI agents; Trivy scans; least-privilege IAM in requirements/.
Fix once, everywhere CI logic lives in versioned shared repos (ci-scripts, ci-github, ci-gitlab, ci-jenkins). Bump v1, every project picks it up.
Roles, not shared tokens Members join by invitation or are added with an account; viewer reads, developer branches and commits, deployer releases, admin and owner run the organization. Code-host credentials stay on the platform — the CLI and MCP act with your role through the hosted API.

What you get

Type Stacks
web python (FastAPI, FastMCP), go (Gin), node (React)
library python, go, php, node, java, rust
docs mkdocs
plugin chrome
empty platform.toml + code quality only

Cloud overlays aws/lambda, aws/amplify, docker; services postgres (docker, aws-rds). Every template comes with tests, lint, CI and AGENTS.md. Your organization can add any git repository as a template — a plain starter becomes one template, a repository with an index.toml a whole catalog. Existing repositories join with one click: the platform installs platform.toml, code quality, CI and hooks, and opens the pull request. → Templates

Git-flow, enforced

Branches are <kind>/<code>, commits are Conventional Commits, main/develop take no direct commits. Git hooks refuse the wrong move before it exists; CI refuses it on the pull request; the CLI and the MCP tools guide the right one. → Git-flow

From the browser

flowchart LR
    T[Templates<br/>official + your repositories] --> A[App<br/>clone on the platform]
    R[Existing repository] -->|install platform.toml, CI, hooks| A
    A --> C[Configuration<br/>deploy target · services · platform.toml]
    C -->|commit on chore/&lt;code&gt;| P[Pull request]
    A --> B[Activity<br/>branches · pull requests]
    A --> V[Releases<br/>stable from main · rc elsewhere]
    V --> I[(images · PyPI · GitHub release)]

Documentation

Self-hosting install.sh, compose, Dokploy, environment, upgrades, backups
Web app organizations › teams › projects › apps, roles, setup wizard, code hosts, template repositories, importing, configuration, releasing from the browser
CLI every command
Git-flow branch kinds, commit format, what hooks and CI refuse
platform.toml the file that declares a project
Templates the matrix, adding your own repositories, how to add to the official one
MCP tools and prompts for AI clients, locally or against a hosted platform
Releases versions per component, tags, what each publishes
Architecture packages, the API, providers, how credentials travel
Development running it locally, tests, regenerating the API client

Extend it

Deploy targets are plugins. Implement the DeployTarget contract — preflight, create, deploy, switch_traffic, rollback, diagnose, delete — publish it under the action_platform.deploy_target entry-point group, and action-platform deploy finds it by name.

from action_platform import ActionPlatform, Config
from action_platform.providers.source.github import SourceGithub

tool = ActionPlatform(config=Config(source_host=SourceGithub(repo="acme/orders")))
tool.release("minor")

Templates are plain cookiecutters in actionplatform/templates. Add a stack or a cloud with a pull request — the CLI reads index.toml, nothing to redeploy. Point ACTION_PLATFORM_TEMPLATES at a local checkout while you work on them, or keep your own repository next to the official one: action-platform init --source https://github.com/acme/templates.git@main, or Templates → Add repository in the web app.

Ecosystem

Repo Role
templates projects, clouds, services
ci-scripts the one implementation of setup / check / release / commit lint
ci-github · ci-gitlab · ci-jenkins thin wrappers per CI

Contributing

Read CONTRIBUTING.md first — git-flow branches, Conventional Commits, one pull request per change, discussion before anything large. Everyone in the project's spaces follows the Code of Conduct. Vulnerabilities go through SECURITY.md, never through a public issue.

License

Apache 2.0.

Release files for action-platform 0.6.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for action-platform 0.6.8
File Size Uploaded
action_platform-0.6.8.tar.gz 86.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for action-platform 0.6.8
File Interpreter ABI Platform
action_platform-0.6.8-py3-none-any.whl Python 3 none any Details

Total release size: 213.3 kB

Release files / action_platform-0.6.8.tar.gz

Download URL action_platform-0.6.8.tar.gz
Size 86.4 kB
Tags Source
SHA-256 checksum
How to use checksums
06f408ab9852a85f3e29b80a7d225418da2b7eeed3069e8431e11af6249350aa
BLAKE2b-256 checksum
How to use checksums
f703ec9b6adecdba9a78f6939b2a664b9b91ac12423c6392ce0daef63c1b2fea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / action_platform-0.6.8-py3-none-any.whl

Download URL action_platform-0.6.8-py3-none-any.whl
Size 126.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ecb83c87f7f0eeb0bf7cc7093d17a2b4b92fb332baa9e2c93221528c705dbccc
BLAKE2b-256 checksum
How to use checksums
516e656474cf0d4c228caf1673bd9dd84822b40bd46440f9d3ef1e51552f37bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release history Release notifications | RSS feed

0.28.1

2 release files

0.28.0

2 release files

0.27.1

2 release files

0.27.0

2 release files

0.26.1

2 release files

0.26.0

2 release files

0.25.0

2 release files

0.24.0

2 release files

0.23.0

2 release files

0.22.0

2 release files

0.21.0

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.0

2 release files

0.17.9

2 release files

0.17.8

2 release files

0.17.7

2 release files

0.17.6

2 release files

0.17.5

2 release files

0.17.4

2 release files

0.17.3

2 release files

0.17.2

2 release files

0.17.1

2 release files

0.17.0

2 release files

0.16.1

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.10.2

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.13

2 release files

0.6.12

2 release files

0.6.11

2 release files

0.6.10

2 release files

0.6.9

2 release files

This release

0.6.8 This release

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page