Skip to content
SeptillionerPublic

About

Pablo is a CLI deployment helper that automates building, filtering, and deploying artifacts across multiple environments. It supports local and remote (SSH) targets driven by a single YAML manifest.

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

Pablo logo

Pablo

One manifest. From build to deployment.

Build, select, and deploy your application locally or over SSH, from your terminal or editor.

Latest release License: Apache 2.0 Platforms: Windows, macOS, Linux

Download · Features · Installation · Quick start · Documentation


Features

  • Keep deployments alongside your code. Define applications, environments, credentials, and release sequences in pablo.yaml.
  • Build only when you need to. Run a build command or deploy existing files with include and exclude patterns.
  • Deploy locally or over SSH. Copy static assets and binaries, synchronize Git repositories, or run Docker Compose on your target.
  • Choose how files are replaced. Use overwrite, backup, recreate, or per-file rename-replace strategies, with rollback where supported.
  • Coordinate releases. Run ordered profile/environment sequences and configure blue-green slots with your own switch commands.
  • Work from your editor. Get completion, hover documentation, validation, and deployment actions in VS Code and Visual Studio.

Built with Go. Distributed as a standalone CLI for Windows, macOS, and Linux.

Pablo deployment demo

Explore

Examples · Configuration · SSH · Deployment strategies · Troubleshooting · Changelog


Installation

The installer downloads the latest release for your platform, verifies its SHA-256 checksum, and installs it to a system or user path.

Windows

Run in PowerShell:

$installer = "$env:TEMP\pablo-install.ps1"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-RestMethod https://raw.githubusercontent.com/septillioner/pablo/master/scripts/install.ps1 -OutFile $installer
powershell -NoProfile -ExecutionPolicy Bypass -File $installer

macOS and Linux

curl -fsSL https://raw.githubusercontent.com/septillioner/pablo/master/scripts/install.sh | bash

Verify your installation:

pablo version

You can also download a binary from GitHub Releases and place it on PATH. See the installation guide for manual installation, Windows cmd, and version pinning.

Requirements

The CLI does not require Go at runtime. Additional tools depend on your deployment workflow:

Tool When needed
Git git-sync and docker deployments
Docker with Compose docker deployments
OpenSSH client Remote SSH deployments
Your build tools When your manifest includes a build command

Updates

pablo update check
pablo update

Quick start

Try a local deployment before connecting a server. Create a project with one source file:

mkdir pablo-demo
cd pablo-demo
mkdir src
echo "Hello from Pablo" > src/index.html

Save this as pablo.yaml in pablo-demo:

name: my-app
version: 0.1.0

profiles:
  default:
    type: static
    environments:
      production:
        deploy:
          source:
            dir: ./src
            include: ["**/*"]
          target_path: ./deploy-output
          strategy: overwrite

Validate and deploy:

pablo check
pablo run

Your file is now at deploy-output/index.html. This example needs no build step or remote server.

For an existing project, run pablo init to generate a sample manifest or pablo init --template to open the template wizard. Continue with the first deployment walkthrough or deployment examples.

Deployment workflows

Use profiles for different applications and environments for their deployment targets. Select a target explicitly, or run an ordered sequence defined in your manifest:

pablo run frontend/production
pablo run -p backend -e staging
pablo run sequence release

Without a selection, Pablo uses profile default and environment production from pablo.yaml. Use -f to select another manifest.

Type Workflow
static Deploy HTML, frontend bundles, and other files, with an optional build step
binary Deploy executables and optionally register their directory on PATH
docker Synchronize a Git repository and deploy a Docker Compose stack
git-sync Synchronize application source and run installation or restart commands

All four types support local and SSH targets. See capabilities for supported options and limitations, or the CLI reference for all commands and flags.

Editor support

Both extensions use pablo lsp for manifest completion, hover documentation, diagnostics, and deployment CodeLens.

Editor Installation Setup
Visual Studio Code Install Pablo (septillioner.pablo) from the Marketplace or a release VSIX VS Code guide
Visual Studio 2022 / 2026 Install the Visual Studio VSIX from GitHub Releases Visual Studio guide

Documentation

I want to… Start here
Set up my first deployment Quick start
Adapt a complete manifest Deployment examples
Understand manifest fields Configuration reference
Deploy to a server SSH guide
Manage replacement and rollback Deployment strategies
Deploy several targets in order Sequences
Configure blue-green deployment Blue-green guide
Resolve a deployment problem Troubleshooting

Browse the documentation index for Docker, credentials, Git sync, binary deployments, and development guides.

Development

Building from source requires Go 1.25.5+ and Git.

git clone https://github.com/Septillioner/pablo.git
cd pablo/src
go build -o ../build/pablo .
go test ./...

On Windows, use go build -o ../build/pablo.exe .. From the repository root, ./scripts/build.sh all builds the release targets using Bash.

See the testing guide for integration tests and deployment fixtures, and the release process for publishing.

Contributing and security

Read CONTRIBUTING.md before submitting changes. Report vulnerabilities through the process in SECURITY.md.


Pablo · Licensed under Apache 2.0

Created by Ege Ismail Kosedag

About

Pablo is a CLI deployment helper that automates building, filtering, and deploying artifacts across multiple environments. It supports local and remote (SSH) targets driven by a single YAML manifest.

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages