Skip to content
chalupa
How it worksSecurityDocumentation
Open console
Menu
How it worksSecurityDocumentationOpen console
chalupa

Operational signal for ephemeral environments. Compute can be torn down while persistent data follows its own lifecycle.

Product

How it worksSecurityConsole

Learn

QuickstartConceptsAPI and schema

Built for ephemeral operations, not forgotten resources.

All displayed costs are estimates.

Documentation/Data and seeding
/

Start here

QuickstartSecrets with tvault

Operating model

Conceptschalupa.yml referenceLifecycleTunnels and securityData and seeds

Control plane

Control plane and agentSuites and artifactsCosts and idle observation

Reference

Private operationsTroubleshootingAPI and schema
Browse documentation
/

Start here

QuickstartSecrets with tvault

Operating model

Conceptschalupa.yml referenceLifecycleTunnels and securityData and seeds

Control plane

Control plane and agentSuites and artifactsCosts and idle observation

Reference

Private operationsTroubleshootingAPI and schema

Operating model

Data and seeding

Keep durable state separate from replaceable compute and avoid restoring the same dataset in every cycle.

Reviewed 2026-07-23

An ephemeral droplet is useful only if destroying it does not force you to rebuild expensive data every time. Chalupa solves this problem with an independent block storage stack.

The following commands assume:

export DEMO_CONFIG="/path/to/project/chalupa.yml"

Declare persistence

persist:
  sizeGb: 20

After validating Compose:

task data-up CONFIG="$DEMO_CONFIG"

The volume is created in the demo-harbor-data stack. The 20 GiB value is a synthetic example; choose capacity based on your dataset, operating margin, and current price.

How volumes are mounted

Block storage is mounted at /mnt/chalupa. Each named Compose volume uses a subdirectory:

/mnt/chalupa/
  postgres-data/
  redis-data/

Bind mounts are generated from the volumes actually used by the selected services. Chalupa does not add a volume that belongs only to a pruned service.

Restore a seed

Declare a local command:

seed: bun run seed:demo

Keep the tunnel open in one terminal:

task tunnel CONFIG="$DEMO_CONFIG"

Then run this command in another:

task seed CONFIG="$DEMO_CONFIG"

The command runs in your project, not inside the droplet. Your tools reach the remote databases through SSH at localhost.

Keep literal credentials and secret-store references out of the seed string: the command is stored as a local Pulumi output. Let the project-owned script inject any required credential at runtime and keep shell tracing disabled.

Design a repeatable seed

A production seed should:

  1. fail with a nonzero exit code;
  2. support resuming or explain how to clean up a partial attempt;
  3. validate that the tunnel and the correct service are available;
  4. avoid printing credentials;
  5. produce a clear completion signal.

For large datasets, prefer verifiable files and bounded retries for each restore unit. Avoid one fragile stream when the source tool supports partitioning.

What happens when you sink compute

task down CONFIG="$DEMO_CONFIG"

This destroys the droplet. It does not destructively unmount or delete the demo-harbor-data stack. On the next task up, the new compute mounts the volume again.

In the Chalupa console, a sunk environment can show:

  • estimated compute cost of zero;
  • estimated storage cost greater than zero;
  • the latest observed capacity and usage;
  • a seed-restored event, if one was reported.

Do not interpret “sunk” as “no remaining cost.”

Delete data

task data-nuke CONFIG="$DEMO_CONFIG"

This destroys the persistent volume. It is irreversible and not part of the normal lifecycle. Before you run it:

  • confirm the exact stack;
  • verify that no unique seed exists without a backup;
  • retain any required artifacts or dumps;
  • communicate the expected data loss.

Artifacts are not volumes

Videos, reports, and screenshots from a suite must not accidentally live inside the database volume. Chalupa suite runs store references to a fcheap-local stash or an external URL. See Suites and artifacts.

PreviousTunnels and securityNextControl plane and agent

On this page

Declare persistenceHow volumes are mountedRestore a seedDesign a repeatable seedWhat happens when you sink computeDelete dataArtifacts are not volumes