Skip to content
Deployments

Deploy the audio post-production worker template with OpenTofu

Deployment · Updated Jun 2026

Coming from another cloud?

▸AWS·Transcribe

This Quake AI feature maps to AWS’s Transcribe.

▸Google Cloud·Speech TO Text

This Quake AI feature maps to Google Cloud’s Speech TO Text.

Deploy the audio post-production worker template with OpenTofu

Stand up a CPU FFmpeg worker that polls an input bucket and writes mastered MP3 files to an output bucket using the validated OpenTofu template audio-worker. The worker runs on a private subnet with no floating IP; it reaches Object Storage over outbound HTTPS.

Monthly cost estimate

Pricing calculator ↗

Sized as a custom package on dedicated vCPU.

Starting template$60.20/mo

Monthly total for the required template above. Use the configurator below to add optional pieces and see the total update.

What each resource is for

Worker node

c2a.large · 2 dedicated vCPU, 4 GiB RAM, 0.5 Gbps

$62.00/mo

Compute shown per role at custom-package rates ($29/dedicated vCPU, $7.25/shared vCPU, $1/GiB RAM). The headline above is the billed total: the cheaper of a named plan and the custom package, plus add-ons.

Included in baseline

c2a.large

2 dedicated vCPU, 4 GiB RAM, 0.5 Gbps

$62.00

Compute + RAM rate basis

2 vCPU + 4 GiB RAM at $29/dedicated vCPU, $7.25/shared vCPU, $1/GiB RAM (regular). Totals apply the flat −$5/mo package promotion.

—

Block storage (40 GiB)

40 GiB at $0.08/GiB/mo

$3.20

Package promotional discount

Flat −$5.00/mo on the custom package (same promotion as named plans).

$-5.00

Object storage (usage-based)

Object storage

2 buckets. The first 1 TB is included, then $10.00 per TB each month. You pay for what you store, so this line depends on usage.

$0–$40/mo

Assumes: 2 TB stored is $10/mo; 5 TB stored is $40/mo. Within the included allotment it stays $0.

Included at no charge

These line items are zero on Quake AI. Many other providers meter them separately.

Data transfer (inbound and outbound)

Unlimited data transfer on every plan; Quake AI does not meter per-GB egress.

AWS, GCP, and Azure meter outbound transfer per GB. DigitalOcean and Hetzner include an allowance on compute plans, then charge overage.

Learn more
$0.00

Object storage upload and download

No separate charges for uploading or downloading object storage data.

Most object storage providers meter egress and API requests separately from stored capacity.

Learn more
$0.00

Private networking

Private networks, subnets, Neutron routers, and security groups are included with the plan.

VPC objects are usually free to create elsewhere, but NAT gateways bill hourly plus per-GB processed. Quake AI uses router SNAT with no separate NAT line item.

$0.00

Control-plane API requests

OpenStack API calls for provisioning and management are included.

Some managed services on other clouds meter API calls or charge for premium control-plane features.

$0.00

Configure your estimate

Check the add-ons you plan to deploy to build a monthly total. Nothing is selected to start, so the total below begins at the baseline.

Starting template

The required baseline, always included.

$60.20/mo

Pick how much you expect to store to fold it into the total.

$0.00/mo
Your configured estimate$60.20/mo

Dev/test vs production

Start on shared CPU for dev/test, then promote to dedicated for production with a flavor resize. The network, storage, and template stay the same.

Dev/test on shared CPU

Burstable s1a flavors; suited to prototyping and low or bursty load.

$14.70/mo

Production on dedicated CPU

The headline estimate above; predictable steady-load performance.

$60.20/mo

Saves $45.50/mo while you build on shared CPU.

Shared flavors carry less RAM (c2a.large (4 GiB RAM) -> s1a.small (2 GiB RAM)). A resize reboots the instance; data on attached volumes persists. Size the dedicated flavor for the RAM your production workload needs.

Pricing data last validated: . For current rates, check quake.ai/pricing.

Quake AIInput bucketraw audioOutput bucketmastered MP3CPU workerFFmpeg poll loopPrivate networkno floating IP pollwrite MP3
Click to zoom
Audio worker topology: input and output buckets, egress-only CPU worker on a private network, no floating IP

Prerequisites#

You need:

Step 1: Mint credentials and configure variables#

Mint EC2-compatible credentials and export the standard AWS variables:

bash
openstack ec2 credentials create
export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
export AWS_ENDPOINT_URL_S3=https://object.us-east-1.rumble.cloud

Copy terraform.tfvars.example to terraform.tfvars and set:

HCL
key_name           = "YOUR_KEY_NAME"
input_bucket_name  = "YOUR_PROJECT_AUDIO_IN"
output_bucket_name = "YOUR_PROJECT_AUDIO_OUT"

s3_access_key = "YOUR_ACCESS_KEY"
s3_secret_key = "YOUR_SECRET_KEY"

Pick globally unique bucket names within your project. Defaults for worker_flavor, poll_interval_seconds, and target_lufs are documented on the Audio post-production worker reference page.

Step 2: Apply the template#

From the template directory, run:

bash
tofu init
tofu plan
tofu apply

Type yes when prompted. Provisioning takes a few minutes while cloud-init installs FFmpeg and starts the worker service.

When the run finishes, note input_bucket and output_bucket from the outputs. The template allocates zero floating IPs by default.

Step 3: Verify loudness normalization#

Upload a short audio file to the input bucket. The worker accepts .wav, .flac, .mp3, .m4a, .aac, and .ogg keys:

bash
ffmpeg -f lavfi -i "sine=frequency=440:duration=3" -ar 44100 /tmp/deploy-tone.wav
aws s3 cp /tmp/deploy-tone.wav "s3://$(tofu output -raw input_bucket)/deploy-tone.wav" \
  --endpoint-url "$AWS_ENDPOINT_URL_S3"

Wait at least one poll interval (60 seconds by default) for the worker to process the file. List the output bucket:

bash
aws s3 ls "s3://$(tofu output -raw output_bucket)/" --endpoint-url "$AWS_ENDPOINT_URL_S3"

You should see deploy-tone-master.mp3. Download it to confirm:

bash
aws s3 cp "s3://$(tofu output -raw output_bucket)/deploy-tone-master.mp3" /tmp/deploy-tone-master.mp3 \
  --endpoint-url "$AWS_ENDPOINT_URL_S3"
file /tmp/deploy-tone-master.mp3

The file command should report an MP3 audio stream. If nothing appears after two poll intervals, confirm the worker instance status is Active in the Console.

Next steps#

Clean up#

Empty both buckets, then run tofu destroy from the project directory:

bash
aws s3 rm "s3://$(tofu output -raw input_bucket)" --recursive --endpoint-url "$AWS_ENDPOINT_URL_S3"
aws s3 rm "s3://$(tofu output -raw output_bucket)" --recursive --endpoint-url "$AWS_ENDPOINT_URL_S3"
tofu destroy

Delete the EC2-compatible credential with openstack ec2 credentials delete YOUR_ACCESS_KEY if you created one only for this deployment.

Was this page helpful?