Embark

Ship vibe-coded apps with zero config.

Auto CI/CD · Auto Docker · AI-powered · Cloud Run · Netlify

Scroll to explore

Perfect For

Embark removes the gap between "it works on my machine" and "it's live in production".

🚀

Side Projects

You want to ship your weekend idea, not spend Saturday writing YAML. Clone, code, push — it's live.

⏱️

Hackathons

48 hours to build and demo. Embark gives you CI/CD, Docker, and deploy from minute zero. Focus on the product.

🧩

Microservices

Each package deploys independently with its own workflow. Add a service, delete a service — the monorepo adapts.

🧪

Rapid Prototyping

Spin up 5 different API ideas in one repo. Each gets its own pipeline. Kill the ones that don't work, ship the ones that do.

👥

Small Teams

No DevOps engineer? No problem. Embark enforces quality, generates infra, and keeps your repo clean automatically.

📚

Learning DevOps

See real CI/CD, Docker, and deploy configs generated in front of you. Learn by reading what Embark creates.

Why Embark?

Stop configuring. Start shipping. Embark handles the boring stuff so you can focus on building.

0
Lines of CI/CD config
Workflows are auto-generated
0
% test coverage enforced
Pre-push hooks guarantee quality
0
Pre-commit automations
Everything runs before you even push
0
AI CLIs supported
Gemini, Claude, Copilot, Codex

Built for Developers, Powered by AI

The perfect blend of automation and control.

🤖

AI as Your Sidekick

Let AI generate Dockerfiles, boilerplate, and configs while you focus on building features. You stay in control—every generated file is readable and editable.

📦

Embed Anywhere

Deploy frontend packages to Netlify or any static host. Then embed them anywhere—dashboards, wikis, intranets—via simple <iframe> tags. Publish once, use everywhere.

Pleasure + Utility

Work with a beautiful, fast framework that doesn't get in your way. Ship faster, sleep better, spend Friday on what actually matters—not debugging YAML or wrestling Docker.

How It Works

Three commands. That's it. From zero to deployed.

terminal
$
$
$

Features

Everything you need to ship fast, nothing you don't.

What Happens on Commit

Every git commit triggers a pipeline of automations. No config required.

⚙️

Ensure Deploy Config

Detects packages without .embark.json and asks you to choose a deploy target: Cloud Run, Netlify, or Other.

🔧

Generate Workflows

Scans packages/ and creates a GitHub Actions workflow for each new package using the template.

🔄

Sync Workflows

Compares existing workflows with the template. If the template changed, offers to update them interactively.

🧹

Cleanup Orphans

Detects workflows for deleted packages and removes them automatically. No zombie workflows.

🐳

Generate Dockerfiles

Finds packages without Dockerfiles. Choose AI generation (Gemini, Claude, Copilot, Codex) or smart defaults.

📄

Update README

Auto-updates the packages table in README.md. New packages appear, deleted ones disappear.

Real Workflows in Action

Two packages, two AI models, two deploy targets. Same magic, different paths.

Netlify + Codex
my-landing-site
$
GCP Cloud Run + Claude
api-service
$

AI-Powered Dockerfile Generation

Choose your favorite AI provider and let it generate optimized Dockerfiles for your apps.

Copilot

Copilot

by GitHub

npm install -g @github/copilot
Claude

Claude

by Anthropic

curl -fsSL https://claude.ai/install.sh | bash
Codex

Codex

by OpenAI

npm install -g @openai/codex
Gemini

Gemini

by Google

npm install -g @google/gemini-cli

Install any or all of these CLIs. When you run bun run new-package, Embark will ask which AI provider you want to use for Dockerfile generation.

GitHub Secrets Reference

Set these at GitHub → Settings → Secrets and variables → Actions. Only add what your deploy target requires.

GCP

GCP — Google Cloud Run

Required when appDeployment: "gcp"

GCP_PROJECT_IDGoogle Cloud project ID
GCP_SA_KEYService account JSON with deploy permissions
GCP_REGIONCloud Run region (e.g. us-central1)
DOMAINBase domain (e.g. embark.dev)
Netlify

Netlify

Required when appDeployment: "netlify"

NETLIFY_TOKENNetlify personal access token
DOMAINBase domain (e.g. embark.dev)
CF Pages

Cloudflare Pages

Required when appDeployment: "cloudflare-pages"

CF_TOKEN_PAGESAPI Token with Pages + DNS edit permissions
CF_ACCOUNT_IDCloudflare Account ID
CF_ZONE_IDZone ID of your domain
DOMAINBase domain (e.g. embark.dev)
Token needs: Account → Cloudflare Pages → Edit + Zone → DNS → Edit
Cloudflare

Cloudflare DNS

Required when cloudflareUse: true — added on top of GCP or Netlify secrets

CF_TOKENCloudflare API token with DNS edit permissions
CF_ZONE_IDZone ID of your domain in Cloudflare
DOMAINBase domain — must match your Cloudflare zone

Try It Yourself

Simulate the entire pre-commit pipeline. Make choices and see the magic happen.

embark-simulator
$ git add . && git commit -m "feat: my-app"

You Stay in Control

Embark automates the boring parts, but you decide what ships and when.

api changed
dashboard skip
landing skip

Only What Changed Gets Deployed

Each package in the monorepo has its own CI/CD pipeline with path filters. When you push, only packages with actual changes are built and deployed. The rest stay untouched. No accidental deploys, no wasted resources.

auth-api Cloud Run
landing Netlify
worker Other

Mix Deploy Targets

Each package chooses where it deploys. APIs on Cloud Run, frontends on Netlify — in the same monorepo. The framework adapts per package: Docker + workflow for Cloud Run, just a netlify.toml for Netlify.

my-app .embark.json

Override Anything

Manually edited a Dockerfile? Embark won't touch it. Custom workflow? Preserved. Every automation respects existing files. You can also set your own deploy target in .embark.json — the framework follows your lead.

Get Started

Up and running in under a minute.

1

Clone & Install

Clone the repo and install dependencies with Bun. That's it — no global tools, no config files.

git clone https://github.com/blpsoares/embark.git
cd embark
bun install
2

Initialize Repository

Run the init script to clean up demo files and optionally remove Git history. Start fresh with your own repo.

bun run init
# 🗑️ Removes demo package
# ❓ Remove .git? (optional)
# ✅ Ready for your code!
3

Create a Package

Run the interactive CLI. Give it a name and description — the full structure is scaffolded for you.

bun run new-package
# 📝 Project name: my-app
# 📄 Description: My awesome app
# ✅ Package created!
4

Build Your App

Write your code in packages/my-app/src/. Use any framework — Vite, vanilla, React, whatever you want.

# develop with hot reload
bun run --filter @embark/my-app dev

# run tests
bun run --filter @embark/my-app test
5

Commit & Deploy

Commit your code. Pre-commit hooks auto-generate workflows, Dockerfiles, and update the README. Push to deploy.

git add .
git commit -m "feat: my awesome app"
git push origin main
# 🚀 Auto-deployed to Cloud Run!

Architecture

A clean, opinionated structure. Every file has a purpose.