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: 36 remote tools that know who you are, which app the current directory is, what your token may do, and can manage projects, teams and members.

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 source 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, Jenkins or Bitbucket Pipelines 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, ci-bitbucket). Bump v1, every project picks it up.
Roles, scoped 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. action-platform login mints a token with a scope (read, write, release, admin) and a reach (one organization or all, a project, an app) that never exceeds your role. Connected apps shows every token, which program uses it — Claude Code, Codex, Cursor, the CLI — and every browser session, all revocable. Source-host credentials stay on the platform.

What you get

Type Stacks
web python (FastAPI, FastMCP), go (Gin), node (Fastify, React), java (Spring), kotlin (Spring), ruby (Sinatra)
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

docs/ is organized by what you want to do — start, use, concept, contribute:

Start Getting started · Self-hosting
Use Web · CLI · MCP · API · Plugins
Concept Access control · Git-flow · Manifest · Templates · Releases · Observability
Contribute Architecture · Development · Writing a plugin

Versions and history: LAST_VERSION / CHANGELOG.md for the library and CLI, apps/web and apps/api for the web app and the API.

Extend it

Everything is a plugin. Deploy targets, CI runners, release strategies and changelog formats are named providers behind entry-point groups; git-flow rules, the releaser, the deployer, the installer and the scaffolder are slots a plugin replaces with a subclass; MCP tools, CLI commands and cloud overlays ride along. action-platform plugin install aws-lambda — see plugins.

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 · ci-bitbucket 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.17.6

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.17.6
File Size Uploaded
action_platform-0.17.6.tar.gz 99.7 kB Details

Built distribution (wheel)

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

Total release size: 237.4 kB

Release files / action_platform-0.17.6.tar.gz

Download URL action_platform-0.17.6.tar.gz
Size 99.7 kB
Tags Source
SHA-256 checksum
How to use checksums
75485962aee87560465b5077f0c72ccdd421acb9f73bbea5400776405db8ff2d
BLAKE2b-256 checksum
How to use checksums
afa56042833632f4024f624ed7532eabc06c865e74f2af8af65b41f43a9ffc07
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 15, 2026.

Transparency log

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

Download URL action_platform-0.17.6-py3-none-any.whl
Size 137.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b7f792c399042d025760deb4be570cba65509758f8e723327f917c2c260336d4
BLAKE2b-256 checksum
How to use checksums
82018af127af899d9dee97e08b0c410f32bec3dc4e97e648ea9d484e1c285a08
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 15, 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

This release

0.17.6 This release

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

0.6.8

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