Bacalhau v1.8.0 - Day 2: Rerun, Update, and Version Your Bacalhau Jobs
How we're making job management less of a chore and more of a superpower
This is part of the 5-days of Bacalhau 1.8 series! Make sure to go back to the start to catch all of them!
Day 1: Announcing Bacalhau v1.8.0: Intelligent Edge Computing Meets Enterprise Integration
Day 2: Rerun, Update, and Version Your Bacalhau Jobs (this post)
Remember j-f47ac10b-58cc-4372-a567-0e02b2c3d479? Probably not. And why should you? Until now, managing jobs has meant juggling cryptic, auto-generated IDs. You run a job, copy the ID, paste it to check the status, paste it again to get the logs, and hope you don't mix it up with the other dozen UUIDs in your terminal history.
We knew there had to be a better way.
That's why we're thrilled to introduce a fundamental overhaul to job management in Bacalhau. We're moving beyond throwaway IDs to a durable, name-based system that lets you rerun, update, and version your jobs with intuitive commands. This isn't just a quality-of-life update: it's a new paradigm for managing the entire lifecycle of your computational work.
Let’s see what’s new in Bacalhau 1.8.0. about that!
A Fundamental Shift: From Cryptic IDs to Meaningful Names
Let's be honest: the old way of working with jobs was functional, but could be frustrating. Every bacalhau job submit created a completely new job with a new ID. This led to a trail of disconnected job runs that were hard to track and even harder to manage.
The pain of UUIDs: Workflows required constant copying and pasting of non-human-readable IDs. It was tedious and error-prone.
No inherent history: If you ran the same analysis five times, you would get five unrelated jobs. Tracking the evolution of your work was a manual, out-of-band process.
A disconnected experience: Describing, logging, and fetching results all felt like one-off operations on ephemeral objects, rather than interactions with a persistent, evolving task.
With this update, we're introducing a more intuitive, name-based approach. You now define a name for your job directly in the job spec file. Bacalhau uses this name to anchor the job's identity, treating subsequent runs as new versions of the same job. This simple change transforms the entire workflow.
Here is how it was until now:
# Before: A trail of generated IDs
bacalhau job submit my-analysis.yaml # --> j-f47ac10b...
bacalhau job describe j-f47ac10b... # Must use the generated ID
And this is how we transformed it:
# After: Use your job's name everywhere
bacalhau job submit my-analysis.yaml
bacalhau job describe monthly-sales-report-generator # So much better!
Best of all? This is fully backward compatible!. All your old scripts and workflows using job IDs will continue to work exactly as they did before. You can adopt the new name-based system at your own pace.
What's New: Your Job Management Superpowers
This update is built on three powerful new capabilities:
Job rerunning: A dedicated rerun command to restart completed or failed jobs, creating a new version while preserving history.
Enhanced job versioning: Automatic version tracking is now built in. All core commands (describe, logs, get) are now version-aware.
Advanced dry-run with diff preview: See exactly what will change before you update a job, like a git diff for your compute.
The rerun
Command: Stop Re-Submitting, Start Rerunning
Ever had a job fail due to a transient network blip? Or needed to reprocess a dataset after a minor code tweak? Previously, you'd have to go back and submit the job all over again, creating a new, disconnected job ID.
The new rerun command makes this a first-class operation:
# Rerun the latest version of a job by name
bacalhau job rerun monthly-sales-report-generator
# Need to rerun an older, specific version? No problem.
bacalhau job rerun monthly-sales-report-generator --version 2
When you rerun a job, Bacalhau intelligently creates a new version under the same name. This preserves the original job's history and artifacts while letting you iterate. It also includes safety checks to prevent you from rerunning jobs that are already pending or in-flight.
Enhanced Job Versioning: Manage Your Job's Evolution
Your workflows aren't static. You tweak parameters, update Docker images, and refine your analysis over time. Bacalhau now embraces this evolution with built-in versioning.
Every time you submit a job with an existing name, a new version is created. You can then interact with any version of the job using a simple --version flag.
# View details of a specific job version
bacalhau job describe my-ml-training --version 3
# Get execution details from the very first run
bacalhau job executions my-data-pipeline --version 1
# View logs from an earlier version to debug a change
bacalhau job logs my-analysis --version 2
If you don't specify a version, Bacalhau defaults to the latest one. This makes your day-to-day work seamless while giving you the power to dive into the history whenever you need to.
Advanced Dry-Run: The “git diff
" For Your Compute Jobs
Updating a critical production job can be nerve-wracking. Did you format the YAML correctly? Are the container arguments right?
Our enhanced --dry-run functionality gives you confidence by showing you a server-side "diff" of your proposed changes.
# Preview changes against the latest version before applying them
bacalhau job run --dry-run updated-job.yaml
Because the job name is in your YAML file, Bacalhau finds the latest existing version and generates a precise, color-coded diff showing you exactly what will be added, removed, or changed. This isn't a simple text comparison; it uses the same validation logic as a real job submission, so you can be sure that what you see is what you'll get. No more "pray and run."
Your New Workflow, Transformed
This update fundamentally changes the job management lifecycle from a series of disconnected, one-shot commands into a fluid, continuous workflow.
Before: Basic, Disconnected Operations
# Basic job operations
bacalhau job describe <job-id>
bacalhau job run --dry-run job.yaml # Basic client-side validation only
After: Rich, Version-Aware Lifecycle Management
# Use names OR IDs, and interact with any version
bacalhau job describe my-job --version 2
bacalhau job rerun my-job --version 1
bacalhau job run --dry-run job.yaml # Server-side diff preview!
bacalhau job executions my-job --version 3
Conclusion
These new capabilities are available now. Just update to the latest Bacalhau client to get started. We believe this new, name-based approach will make managing your computational workflows more intuitive, powerful, and reliable.
What's Next?
Ready to experience the enhanced daemon job capabilities? Upgrade to Bacalhau 1.8 and see the difference in your distributed workloads
Get Involved!
We welcome your involvement in Bacalhau. There are many ways to contribute, and we’d love to hear from you. Reach out at any of the following locations:
Commercial Support
While Bacalhau is open-source software, the Bacalhau binaries go through the security, verification, and signing build process lovingly crafted by Expanso. Read more about the difference between open-source Bacalhau and commercially supported Bacalhau in the FAQ. If you want to use the pre-built binaries and receive commercial support, contact us or get your license on Expanso Cloud!