Zero downtime deployments

Deploy without
taking your app offline

Pushdeck connects to your servers and git repository to deploy your code automatically. Every deployment is atomic, instant, and reversible.

Always free. No credit card required. No usage limits.

my-app / deployment #47
Clone New Release success 4.2s
Install Dependencies success 38s
Activate New Release running
Restart Queue Worker pending
Purge Old Releases pending

Everything you need to ship with confidence

No more SSH sessions, FTP uploads, or praying the deploy doesn't break prod.

Zero Downtime

Each deploy clones into a new release folder. A single symlink swap activates it instantly. Your users never see a broken state.

Multi-Server Deploys

Add as many servers as you need. Every deployment runs across all of them in sequence with per-server logs for each step.

One-Click Rollback

Previous releases stay on disk. Roll back to any successful deployment instantly by activating the old symlink.

Deployment Hooks

Run shell scripts before or after activation. Install packages, migrate databases, clear caches. Anything your stack needs.

Linked Folders

Mark folders like storage/ or public/uploads as shared. They persist across every deploy automatically.

Encrypted Environment

Store your .env file encrypted with your own key. Pushdeck writes it to your servers at deploy time. Your key is never saved to our database, session, or logs.

CI/CD Webhook

Every project gets a unique deploy URL. Hit it from GitHub Actions, GitLab CI, or any pipeline to trigger a deploy automatically.

Per-Step Logs

Every step on every server produces real-time SSH output. When something fails, you see the exact error immediately. No guessing.

GitHub & GitLab

Connect any public or private repository from GitHub or GitLab using a personal access token. Deploy any branch you want.

Slack & Webhooks

Get a Slack message the moment a deploy succeeds or fails. Prefer your own tooling? Point a webhook at any URL and receive a JSON payload for every deployment.

Team Collaboration

Invite teammates by email with roles (Admin, Deployer, Viewer) and fine-grained, per-project permissions. Everyone gets exactly the access they need, nothing more.


Set up once, deploy forever

Connect your server over SSH, link your git repository, configure your hooks, and you're done. Every push or click triggers the same reliable pipeline.

1
Create a project

Give it a name and set the deploy path on your server. That is the root folder where releases will live.

2
Add your server

Pushdeck generates an SSH key pair for you. Add the public key to your server and test the connection.

3
Connect your repository

Link a GitHub or GitLab repo and choose the branch to deploy.

4
Configure hooks

Add scripts for installs, migrations, and restarts. Drag to set the order.

5
Deploy

Click Deploy Now or push to your branch. Watch each step run in real time.


Frequently asked questions

Yes. Pushdeck is completely free to use with no credit card required. Create an account and start deploying in minutes.

Zero downtime deployment means your application stays live while new code is deployed. Pushdeck clones each release into a separate folder and uses a single symlink swap to activate it. Your users never see a broken state or maintenance page.

No. Pushdeck works with any language or framework. It clones your repository, runs your deployment hooks, and swaps the release symlink. What you put in those hooks is entirely up to you. Run npm ci && npm run build for a Node.js app, bundle exec rails db:migrate for Ruby on Rails, go build for Go, or anything else your stack needs. As long as your server runs Linux and you can deploy over SSH, Pushdeck handles the rest.

Yes. Pushdeck works great with Laravel. Run composer install, php artisan migrate, and php artisan queue:restart as deployment hooks before or after each release is activated.

Pushdeck supports GitHub and GitLab. Connect any public or private repository using a personal access token and deploy any branch.

Yes. Every project gets a unique deploy webhook URL. Call it from GitHub Actions, GitLab CI, or any HTTP client to trigger a deployment automatically on every push.

Yes. Connect a Slack Incoming Webhook to get a message in your channel the moment a deploy succeeds or fails, including the commit, who triggered it, and how long it took. You can also point a generic webhook at any URL to receive a JSON payload for every deployment and wire it into your own tooling.

Yes. Invite teammates by email and assign each person a role: Admin, Deployer, or Viewer. You can fine-tune individual permissions per person and per project, so someone can be an admin on one project and view-only on another. Invitations are accepted explicitly, and members can be removed or can leave at any time.

Yes. Previous releases stay on disk. Roll back to any successful deployment with one click. Pushdeck re-activates the old release and re-runs any hooks you placed after activation, so post-deploy steps like cache clears and service restarts still happen. The switch is near instant because nothing has to be re-cloned.

Your live site stays up. Pushdeck clones and runs your build hooks into a brand new release folder and only switches the current symlink once that work succeeds, so a failure before activation never touches the running release. When a step fails, the deployment stops and every remaining step is marked failed so you can see exactly where it broke.

Yes, if you set them as Linked Folders. Each deploy clones a fresh copy of your code, so anything written at runtime would normally be lost. Folders you mark as linked (like storage or public/uploads) live in a shared directory and are symlinked into every new release, so user uploads, logs, and sessions persist across deploys and rollbacks.

Any Linux server you can reach over SSH. DigitalOcean, Hetzner, AWS EC2, Linode, Vultr, your own VPS. If you have SSH access and a deploy path, Pushdeck works with it.

You stay in full control at every level. For your repository, Pushdeck only needs a read-only personal access token scoped to a single repo, so it can clone your code and nothing else. For your server, Pushdeck connects over SSH using a key it generates for you. You add that public key to your server and can delete it at any time to immediately revoke access. You can also restrict that key to a specific user with write access to only your project folder, so Pushdeck cannot touch anything else on the machine. Your environment variables are encrypted with a key only you know, and that key is never saved to our database, session, or logs. Pushdeck follows industry standard security practices and you are always in control of both your code and your infrastructure.

No. Your code is cloned directly onto your own server over SSH, pulled straight from GitHub or GitLab during each deployment. Pushdeck orchestrates the process but never holds a copy of your repository on its own servers.

The encrypted copy stored in Pushdeck cannot be recovered, because your key is never saved anywhere. Your app keeps running normally though, since the plaintext .env was already written to your server at deploy time. You can simply set a new environment key and save your variables again to restore editing.

Ready to deploy without the anxiety?

Create your account in seconds. No credit card required.