Flisk next to the usual tools

Terraform and CDK provision infrastructure. Flisk only runs your app locally.

Task Flisk Local dev stack Terraform Provisions infrastructure AWS CDK AWS infrastructure in code Docker Compose Local containers Tilt Live-update loop Skaffold Kubernetes dev loop Garden Dev and test on Kubernetes PM2 Node process manager
Create a project
flisk project
flisk init

Writes the master config. Add a template name to clone a starter.

Different job, closest command.
terraform init

Prepares a directory that has .tf files. Writes no configuration.

cdk init app --language typescript

Creates a CDK app from a template, in the language you pick.

docker init

Docker Desktop command. Writes Dockerfile, compose.yaml and more.

No equivalent

No init command. You write the Tiltfile by hand.

skaffold init

Finds Dockerfiles and manifests, then writes skaffold.yaml.

garden create project

Writes a project config and a blank .gardenignore. You add actions by hand.

pm2 ecosystem

Writes a sample ecosystem.config.js for you to edit.

Add a service
flisk resource api --type backend

Creates the service and its service.json. Also frontend, worker, mcp, agent.

No equivalent

No scaffold command. You add a resource block to a .tf file.

No equivalent

No command. You add a stack or construct in your code.

No equivalent

No command for it. You add an entry under services in compose.yaml.

No equivalent

No command. Edit the Tiltfile by hand.

No equivalent

No command for it. You add an artifact and its manifests to skaffold.yaml.

No equivalent

No command. You add an action config to a garden.yml file.

No equivalent

No scaffold command. You add an entry to apps in ecosystem.config.js.

Import an existing docker-compose.yml
flisk import ./my-app

One bring-your-own service.json per Compose service. --dry-run previews.

No equivalent

terraform import adopts cloud resources into state, not Compose files.

No equivalent

cdk import adopts existing AWS resources. It does not read Compose files.

Not needed

Not needed. Compose runs the file as it is.

docker_compose('docker-compose.yml')

A Tiltfile line, not a CLI command.

skaffold init --compose-file docker-compose.yml

Needs a Kubernetes cluster to run the result.

No equivalent

No importer. The docs convert a Compose project by hand.

No equivalent

No Compose import. PM2 reads ecosystem.config.js.

Start the stack with live reload
flisk up

Starts every service with Tilt watching. Add a stack name for one stack.

Different job, closest command.
terraform apply

Changes real infrastructure. No file watching.

cdk watch

Deploys to your AWS account on each change, not to local containers.

docker compose up --watch

Each watched service needs a develop.watch section.

tilt up

Runs the services in the Tiltfile and updates them as you edit.

skaffold dev

Builds, deploys to a Kubernetes cluster and redeploys when files change.

garden deploy --sync

Deploys with code sync on, for each Deploy that has sync configured.

pm2 start ecosystem.config.js

Set watch: true on an app to restart on file changes.

Start one service and what it needs
flisk up --only orders-api

Also starts dependsOn services and shared infrastructure.

Different job, closest command.
terraform apply -target=ADDRESS

Applies one resource and its dependencies. Exceptional use only.

cdk watch api

Also deploys the stacks it depends on. --exclusively skips them.

docker compose up orders-api

Also starts linked services, unless they are already running.

tilt up orders-api

A Tiltfile that uses config.parse changes this.

Different job, closest command.
skaffold dev -m orders-api

Filters to named modules, so it needs a multi-config skaffold.yaml.

garden deploy api

Deploys it and the actions it depends on, once.

Different job, closest command.
pm2 start ecosystem.config.js --only api

Starts only the named app. The file has no dependency option.

Preview without changing anything
flisk up --dry-run

Shows what would start, without starting it.

terraform plan

Shows the changes apply would make to your infrastructure.

cdk diff

Compares your code with the deployed stacks.

docker compose --dry-run up

A global flag. It works with most commands, but not with ps, ls or logs.

No equivalent

tilt up has no dry-run flag.

Different job, closest command.
skaffold render

Prints the manifests it would deploy. Needs a cluster unless --offline.

garden plan

Experimental. Shows what would run without changing anything.

No equivalent

No dry-run or plan command.

Restart one service
flisk restart api

Triggers an update in the running stack. Calls tilt trigger.

Different job, closest command.
terraform apply -replace=ADDRESS

Replaces one resource, which recreates real infrastructure.

No equivalent

No restart command. cdk watch redeploys when files change.

docker compose restart api

Ignores changes to compose.yaml and env vars. Run up again.

tilt trigger api

Triggers an update for one resource.

No equivalent

No per-service restart. skaffold dev redeploys when files change.

Different job, closest command.
garden deploy api --force

No restart command. --force redeploys even if the Deploy is up to date.

pm2 restart api

Kills then restarts the process. pm2 reload is for cluster mode.

Stop and tear down
flisk down

Stops all Tilt resources. --dry-run shows what would stop.

terraform destroy

Destroys the real infrastructure Terraform created, not a local dev stack.

cdk destroy --all

Deletes the stacks from your AWS account, not a local dev stack.

docker compose down

Removes containers and project networks. -v also removes named volumes.

tilt down

Deletes what tilt up created. Keeps volumes unless you add --delete-volumes.

skaffold delete

Deletes what Skaffold deployed. skaffold dev also cleans up when you stop it.

garden cleanup deploy

Un-deploys every Deploy. garden cleanup namespace clears the whole namespace.

pm2 delete all

Stops every app and removes it from the list. pm2 stop all keeps them listed.

Check status
flisk status

--unhealthy lists failing or starting services. --json is for scripts.

Different job, closest command.
terraform state list

Lists the resources in state. It does not check whether they are healthy.

Different job, closest command.
cdk list

Lists the app's stacks. It does not show what is deployed or healthy.

docker compose ps

Lists the project's containers and their state.

tilt get uiresources

Lists the resources of a running Tilt. The Tilt web UI shows the same.

No equivalent

No status command. Use kubectl to see what is running in the cluster.

garden get status

Shows the status of the environment and every action.

pm2 list

Lists every process with its status, CPU and memory.

Read logs
flisk logs -s api --since 5m

A bounded snapshot of recent lines. --unhealthy reads only failing services.

No equivalent

Terraform does not run your services. TF_LOG turns on Terraform's own debug log.

Different job, closest command.
cdk watch

No logs command. cdk watch streams CloudWatch log events by default.

docker compose logs -f api

Follows one service's output.

tilt logs -f api

Follows one resource's logs. Add --since to limit by time.

Different job, closest command.
skaffold run --tail

No logs command. skaffold dev streams logs by default, and run does with --tail.

garden logs api

Add --follow to stream new lines.

pm2 logs api

Streams the app's logs. --nostream prints them without streaming.

Find service URLs
flisk networks

Lists the Traefik-routed URL of every service. Add --raw to print URLs only.

Different job, closest command.
terraform output

Prints output values from state, such as an endpoint you declared.

Different job, closest command.
cdk deploy --outputs-file outputs.json

Deploys, then writes stack outputs, such as an endpoint you declared, to a file.

docker compose port web 80

Prints the host port mapped to one service port.

No equivalent

No CLI command. Links show in the Tilt web UI.

Different job, closest command.
skaffold dev --port-forward

Forwards service ports from the cluster as part of the dev loop.

Different job, closest command.
garden get status --output yaml

The output lists each service's ingress endpoints and forwardable ports.

No equivalent

PM2 tracks processes, not URLs or ports.

Diagnose the machine
flisk doctor

Checks Docker, Tilt, disk space, networks. --fix repairs unused networks.

No equivalent

No environment check. terraform version prints versions only.

Different job, closest command.
cdk doctor

Prints project and environment info. Not a readiness check.

Different job, closest command.
docker info

Prints system-wide information. It is not a readiness check.

Different job, closest command.
tilt doctor

Prints diagnostics for bug reports.

No equivalent

No machine check. skaffold diagnose looks at the project config instead.

Different job, closest command.
garden get debug-info

Writes a zip of debug info. Not a readiness check.

Different job, closest command.
pm2 report

Prints a diagnostic report for bug reports. It is not a readiness check.

Check generated config
flisk config verify

Checks generated files match .flisk/project.json. regenerate fixes drift.

terraform validate

Checks .tf syntax and consistency. Does not contact remote state or providers.

cdk synth --quiet

Runs your app and validates the generated templates. --quiet hides the output.

docker compose config -q

Validates compose.yaml. Drop -q to print the resolved model.

Different job, closest command.
tilt alpha tiltfile-result

An alpha command. Runs the Tiltfile and prints the result as JSON.

Different job, closest command.
skaffold diagnose --yaml-only

Prints the effective skaffold.yaml.

garden validate

Checks your config files and exits with code 1 on errors.

No equivalent

No command checks ecosystem.config.js.

Connect an AI coding agent (MCP)
flisk connect claude

Writes the MCP entry and Flisk skills. Also cursor and codex.

Different job, closest command.
claude mcp add terraform -s user -t stdio -- docker run -i --rm hashicorp/terraform-mcp-server

HashiCorp's MCP server: registry docs and HCP Terraform, not a local stack.

Different job, closest command.
claude mcp add aws-iac uvx awslabs.aws-iac-mcp-server@latest

AWS Labs server for CDK docs and CloudFormation checks, not your stack.

Different job, closest command.
docker mcp client connect vscode --profile my-project

Docker Desktop 4.62+. Connects to MCP Toolkit servers, not your Compose project.

No equivalent

No official MCP server from the Tilt project.

No equivalent

No official MCP server from the Skaffold project.

No equivalent

No MCP command in the CLI reference.

No equivalent

No MCP command in the CLI reference.

Remove leftover Docker networks
flisk down --prune-networks
flisk doctor --fix --scope machine

First removes this project's unused networks. Second also clears other Flisk projects'.

No equivalent

Terraform manages what is in its state, not leftovers on your machine.

No equivalent

CDK deploys to AWS, so there are no local Docker networks to clean up.

docker network prune

Removes every unused network on the machine. compose down removes the project's own.

No equivalent

No network cleanup command.

No equivalent

Skaffold runs on Kubernetes, so there are no Docker networks to clean up.

No equivalent

No network cleanup command.

No equivalent

No network cleanup command.