Releases: filecoin-project/curio
v1.27.3-rc3
Curio v1.27.3-rc3
✨ Overview
Curio v1.27.3-rc3 continues the path to a stable v1.27.3 release with bug fixes, dependency updates, and quality-of-life improvements. The headline fix addresses a timezone-related batch timeout bug that caused precommit and commit batches to fire late on non-UTC systems. Batch evaluation has been moved from opaque SQL into tested Go functions, with a new configurable MaxBatch setting for immediate batch firing when full.
Piece CID v1/v2 interoperability improves compatibility across client implementations, and a keccak dependency swap brings back ASM-optimized performance after upstream dropped it.
⭐ Highlights
⏱️ Batch Timeout Timezone Fix & Testable Evaluation
The precommit and commit batching triggers had a timezone mismatch where CURRENT_TIMESTAMP AT TIME ZONE 'UTC' stored into TIMESTAMPTZ columns was silently shifted by the session timezone. This caused batches to take timeout + abs(tz_offset) wall-clock time to fire instead of just timeout. All three SQL trigger functions now use NOW() directly, and the batch firing evaluation has been moved from PL/pgSQL into tested Go functions with comprehensive test coverage. A new MaxBatch config option fires batches immediately when they reach capacity.
🐛 Bug Fixes
-
fix: raw size only if unseal exists - prevents raw-size correction from running on sectors without unsealed data, avoiding unnecessary errors on storage paths (#1047)
-
fix: batch timeout timezone bug and move evaluation to testable Go - fixes timezone mismatch in precommit/commit batch triggers and moves evaluation into tested Go functions with configurable
MaxBatch(#1044)
🔧 Improvements
-
allow piece CID v1 and v2 interoperability - handles both CIDv1 and CIDv2 piece CIDs, improving compatibility across different client implementations (#1048)
-
chore(deps): replace x/crypto with filecoin-project/go-keccak for optimised keccak - uses a maintained fork with ASM-optimized keccak256 after upstream x/crypto dropped assembly implementations in v0.44 (#1060)
-
better uniq - removes unnecessary allocations in the
uniqutility for most common use cases (#1072)
What's Changed
- fix raw size only if unseal exists by @LexLuthr in #1047
- fix: batch timeout timezone bug and move evaluation to testable Go by @snadrus in #1044
- chore(deps): replace x/crypto with filecoin-project/go-keccak for optimised keccak by @rvagg in #1060
- update pdp contract bindings by @LexLuthr in #1013
- better uniq by @snadrus in #1072
- allow piece cid v1 and v2 interoperability by @LexLuthr in #1048
- refactor(proof): extract cached proof pipeline behind testable interfaces (main) by @rvagg in #1068
Upgrade
git checkout v1.27.3-rc3
make clean build
If coming from rc1 or rc2, this is a straightforward rebuild - no database migrations or config changes required.
Full Changelog: v1.27.3-rc2...v1.27.3-rc3
v1.27.3-rc2
Curio v1.27.3-rc2
This is release candidate 2 for v1.27.3, addressing issues reported by the community after rc1.
Thank you to everyone who tested rc1 and provided feedback - your reports directly drove these fixes. 🙏
🔧 Fixes since rc1
SQL / Pipeline Fixes
- fix: FixRawSize CanAccept SQL array cast typo — fixed a SQL type error that could cause worker startup failures on storage paths with raw-size data (#1035)
- fix: FixRawSize SQL column name, join, and filetype bugs — full audit of the FixRawSize migration path, correcting column references, JOIN logic, and filetype handling (#1037)
GPU / Build Fixes
- fix(supraseal): add Turing (sm_75) back to CUDA architectures — restores support for Turing GPUs (RTX 2060/2070/2080, Tesla T4) in supraseal builds. Without this, Turing GPUs would segfault during supraseal operations (#1038)
Documentation
- docs(administration): add node maintenance & cordoning guide — new operational guide for node maintenance workflows and cordon/drain procedures (#1030)
Dependencies
- chore(deps): bump github.com/ethereum/go-ethereum from 1.16.8 to 1.17.0 (#1036)
⚠️ CUDA Compatibility Note
If you are running Turing GPUs (RTX 2080 Ti or older, sm_75), stay on CUDA 12.x. CUDA 13 does not support Turing architecture. The sm_75 fix in this release only helps if your CUDA toolkit version still supports your GPU.
| GPU Architecture | Examples | Minimum CUDA | Maximum CUDA |
|---|---|---|---|
| Turing (sm_75) | RTX 2060/2070/2080, T4 | 12.0 | 12.x only |
| Ampere (sm_80/86) | RTX 3090, A100 | 12.0 | 13.x |
| Ada Lovelace (sm_89) | RTX 4090, L40 | 12.0 | 13.x |
| Hopper (sm_90) | H100 | 12.0 | 13.x |
Upgrade
git checkout v1.27.3-rc2
make clean buildIf coming from rc1, this is a straightforward rebuild — no database migrations or config changes required.
Full Changelog: v1.27.3-rc1...v1.27.3-rc2
v1.27.3-rc1
Curio v1.27.3-rc1
✨ Overview
Curio v1.27.3-rc1 is a substantial update focused on performance, stability, and operational polish for our Curio Storage Providers. This release brings major improvements to the HarmonyTask scheduler - including batch task acceptance, smarter GPU distribution, and critical resource accounting fixes - making large-scale sealing operations significantly more efficient and reliable.
Operators benefit from a heavily upgraded WebUI with a complete sector page overhaul, new storage path management, and enhanced chain connectivity monitoring. The PDP subsystem gains a new sync task for on-chain state tracking, and Fast Snap encoding is now mainlined for faster SnapDeal processing. Across the board, this release hardens error handling, plugs goroutine and resource leaks, and delivers dozens of targeted bug fixes discovered through improved testing and real-world operator feedback.
⚠️ Build Dependency Changes (Linux)
Curio now compiles supraseal (for SnapDeals fast TreeR and batch sealing) by default on Linux.
This adds new build requirements:
| Component | Requirement |
|---|---|
| CUDA Toolkit | 12.x or later (nvcc must be in PATH) |
| GCC | 12 or 13 — must match your CUDA version |
| Python | venv tooling + build tools (autoconf, automake, libtool, nasm, xxd) |
Quick Dependency Install (Ubuntu/Debian)
sudo apt install -y mesa-opencl-icd ocl-icd-opencl-dev git jq pkg-config curl clang build-essential hwloc libhwloc-dev wget python3 python3-dev python3-pip python3-venv autoconf automake libtool libgmp-dev libconfig++-dev nasm xxd && sudo apt upgrade -yInstalling GCC 12 and 13 (Ubuntu/Debian)
Install versions:
For CUDA 12.5 and below
sudo apt install -y gcc-12 g++-12
or
For CUDA 12.6/13 and above
sudo apt install -y gcc-13 g++-13Optional: Configure update-alternatives:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 120
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 130
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 120
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 130Select version:
sudo update-alternatives --config gcc
sudo update-alternatives --config g++CUDA / GCC Compatibility
- CUDA 12.0–12.5 → use
gcc-12/g++-12only - CUDA 12.6+ → either GCC 12 or 13 works
- CUDA 13+ → use
gcc-13/g++-13
Non-GPU / Non-CUDA Servers
If you don't have CUDA or want to skip supraseal:
# Option 1: Skip supraseal entirely
make build DISABLE_SUPRASEAL=1
# Option 2: Use OpenCL instead of CUDA (AMD GPUs or no NVIDIA GPU)
make build FFI_USE_OPENCL=1The build will fail if nvcc is not found and no override flag is set.
This prevents accidental builds without proper GPU support.
⭐ Highlights
🚀 Batch Task Acceptance & Scheduler Improvements
HarmonyTask now accepts multiple tasks at once, dramatically improving throughput on machines with available capacity. Combined with reduced storage scheduling backoff times, smarter GPU round-robin distribution, and fixes to the shouldCommit flag, the scheduler is now faster, more responsive, and better at utilizing available hardware.
🖥️ WebUI Sector Page Overhaul & Storage Paths
The Sectors interface has been completely redesigned with richer deadline tooltips (including timing and PoSt submission warnings), proper Storage Path pages for managing and inspecting storage, and new RPC endpoints for storage path management. Chain Connectivity now includes Lotus network summary signals for better at-a-glance cluster health.
⚡ Fast Snap Encoding (Mainlined)
Fast Snap logic has been mainlined into Curio, enabling faster SnapDeal processing with optimized encoding paths. This is a significant performance win for operators doing snap upgrades at scale.
🛡️ Critical Resource Accounting Fixes
Several high-impact bugs were fixed in the task engine: a releaseStorage() function that never actually released anything (causing fake resource exhaustion), a goroutine leak in CommP calculation, a panic in the GPU device provisioner under overload, and corrected PoRep RAM allocation (50GB → 96GB) to prevent OOM crashes.
⚙️ Configuration & Scheduling
- Batch task acceptance in HarmonyTask — machines now claim as many tasks as they have capacity for in a single call (#854)
- Use correct
shouldCommitvalue so idle machines pick up work immediately instead of waiting 3 seconds (#886) - Reduced storage scheduler backoff from 1 hour to a more reasonable interval, improving throughput on storage-bound nodes (#966)
- Better GPU overprovisioning distribution — work is assigned to the least-loaded GPU instead of filling cards sequentially (#936)
- Fixed dynamic config reads from unreliable database connections (#894)
- Fixed precommit batch timeout due to inconsistent timezone handling in SQL (#941)
- Stop requiring maxFee in wallets for precommit batching (#941)
🧱 Sealing, Proofing & Pipeline
- Mainlined Fast Snap encoding for faster SnapDeal processing (#804)
- Corrected PoRep RAM requirement from 50GB to 96GB to prevent OOM under real workloads (#932)
- Fixed goroutine leak in CommP calculation that could accumulate over time (#906)
- Fixed panic in go-fil-commp-hashhash (#928)
- GPU device provisioner now waits instead of panicking under rare over-request scenarios (#972)
- FFISelect panic fix when round-robin runs out of slots (#962)
- Removed optimal (no FVM) FFI build due to GPU detection issues (#876)
- Fixed Linux build breakage from Fast Snap PR (#882)
- Service file now sets LD_LIBRARY_PATH correctly, and nvcc missing properly errors when GPU proving is needed (#935)
- WindowPoSt exits cleanly for empty deadlines instead of erroring (#982)
- Fix sector extension manager checks: can't extend faulted sectors, max lifetime ≠ max extension (#969)
🗂️ WebUI Enhancements
- Complete sector page overhaul with richer deadline tooltips, PoSt submission warnings, and new Storage Path pages (#893)
- Added storage path RPC endpoints:
StoragePathList()andStoragePathDetail()(#646) - Extended Chain Connectivity panel with Lotus network summary signals (#977)
- Fixed
/infoendpoint to return actual build version instead of hardcoded "Curio/0.0.0" (#916) - Fixed
Susbystemstypo in auto-generated web config layer that silently broke WebGui enablement (#991)
🔗 PDP & Market
- New PDP sync task for on-chain state tracking and automatic cleanup (#660)
- Fixed PDP pool handling — items correctly returned to the pool on error paths (#827)
- Boost migration fix utility for raw size data (#832, #856)
- Fixed Market miner reading bug introduced by dynamic config (#861)
🗃️ Database & Core Systems
- HarmonyDB is now an official CurioStorage package (#853)
- HarmonyTaskList fixes including critical
releaseStorage()bug that never released resources (#891) - Fixed HarmonyDB error return in backoff retry logic (#890)
- Fixed BTFP (transaction blocker) bug (#913)
- Fixed
process_piece_dealduplicate SQL functions causing indexing errors (#925) - Error sanitization — internal details no longer leaked to clients, passwords removed from connection strings (#919)
- Improved
canAccept()performance (#855) - Shutdown poller design improvements and task name cleanup (#963)
- Storage redeclare no longer fetches full sector list for every path — critical fix for large clusters with millions of files (#896)
- Durability fixes: data race in OnChange notifier, nil-error panic, rollback error handling (#917)
🔧 Alerting Fixes
- Fixed alert manager iterating wrong map for machine failure alerts (#988)
- Fixed inverted storage space condition in
permanentStorageCheck— sectors were being misreported as placed/unplaced (#989) - Wallet balance alert now uses the configured
MinimumWalletBalanceinstead of hardcoded "below 5 FIL" (#990)
🔬 Testing & CI
- Added comprehensive CI test coverage with all test suites checked (#960)
- Basic code coverage tool integrated into CI — visible in PR checks (#862)
- Added missed piecereader test for comprehensive coverage of existing logic (#859)
- Fixed flaky
TestWaitListgoroutine scheduling race (#999) - CI updated to Ubuntu 24.04 with improved dependency management (#839, #836)
- Faster
make gen— from ~5 minutes to under 30 seconds (#938)
📚 Documentation
- Troubleshooting & operator playbooks based on real-world issues (#959)
- Refreshed Curio GUI screenshots (#958)
- YugabyteDB backup/restore documentation and other fixes (#957)
- Added missing images to docs (#838)
- Prometheus monitoring documentation improvements (#926)
- Auto-labeling workflow for PDPv0 issues and PRs (#950)
🐛 Bug Fixes
🧱 Sealing & Resource Management
- Fixed
releaseStorage()never releasing storage, causing fake resource exhaustion (#891) - Fixed goroutine leak in CommP calculation (#906)
- Fixed panic in go-fil-commp-hashhash (#928)
- Fixed GPU device provisioner panic under over-request (#972)
- Fixed FFISelect panic when round-robin exhausts slots (#962)
- Corrected PoRep RAM allocation: 50GB → 96GB (#932)
- Fixed WindowPoSt error on empty deadlines (#982)
- Fixed sector extension checks for faults and max lifetime (#969)
🖥️ WebUI & API
- Fixed
/infoendpoint returning hardcoded version...
v1.27.2
Curio v1.27.2
✨ Overview
The Curio v1.27.2 release delivers a significant leap forward for Filecoin Storage Providers, combining major new capabilities with broad stability and performance improvements. This update introduces full support for Filecoin’s Market 2.0 architecture, enabling smarter and more flexible deal-making through contract-driven logic. Operators gain powerful new runtime control through dynamic configuration, letting them adjust key system behaviors without restarting the node.
This release also strengthens Curio’s automation capabilities with a brand-new f05 Balance Manager, ensuring deal collateral is always topped up and reducing day-to-day operational friction. The WebUI sees a substantial upgrade with the introduction of a dedicated Content page, refined guided setup, and a completely updated Sectors interface that now includes a Sector Extension Manager for long-term lifecycle control.
Across retrievals, indexing, sealing, proof generation, networking, and migrations, Curio v1.27.2 delivers faster, more compatible, and more resilient behavior. Retrieval now works seamlessly with Kubo/IPFS, IPNI advertisements are cached and tracked with improved metrics, the Snark Market client has been unblocked and made more reliable, and numerous edge-case bugs have been addressed across the stack.
⭐ Highlights
🚀 Full Market 2.0 Integration
Curio now includes first-class support for Filecoin’s Market 2.0 deal architecture.
This next-generation deal flow brings smarter logic, contract-driven pricing, offline and aggregated deal support, and a unified Market dashboard inside Curio. By integrating Market 2.0 directly into the node, deal intake becomes simpler, more flexible, and future-proof — no separate Boost deployment required.
⚙️ Dynamic Configuration (Live, No-Restart Updates)
Operators can now adjust many Curio settings in real time without restarting the node.
From sealing behaviors to scheduler preferences and P1 routing, this system offers unprecedented control and flexibility. Fine-tune operations under live load, experiment safely, and make quick corrections instantly.
💰 Automated f05 Balance Manager
To prevent missed deals and eliminate constant collateral monitoring, Curio introduces an automated Market (f05) balance manager.
It tracks your escrow balance and automatically tops it up when needed, ensuring continuous deal availability and dramatically reducing operational overhead.
🗂️ New WebUI Content Page
A brand-new Content section in the WebUI gives operators a powerful view into stored pieces, deals, and metadata — including full support for PieceCIDv2.
This brings transparency and simplicity to managing active and historical content across your storage system.
🧱 Sector Extension Manager + Upgraded Sectors UI
Long-term sector lifecycle management gets a major improvement.
Curio now provides:
- A Sector Extension Manager for extending sector lifetimes
- Clear visibility into expiring sectors
- A modernized Sectors interface with more actionable information
Renewable deals and capacity planning are now easier and more intuitive than ever.
You can read more about Curio in our documentation.
🌐 Market & Deal Flow
- Full Market 2.0 integration with Curio’s internal deal engine, enabling smarter, contract-driven storage deal processing.
- Correct handling of CARv2 data sources using
SourceOffset, ensuring reliable retrieval of modern CAR formats. - Minor Mk20 refinements and stability improvements for cleaner deal ingestion and client interactions.
⚙️ Configuration & Scheduling
- Introduction of dynamic configuration, allowing key settings to be updated live without restarting the node.
- Dynamic config is now applied to PreCommit1 (P1) sealing tasks, enabling real-time control over sealing distribution and worker decisions.
- The chain scheduler now updates message execution results first, preventing rare inconsistencies during block evaluation.
- Fixed begin/end timing calculations to ensure accurate scheduling windows across tasks.
- Improved task lifecycle reliability through Harmony task delete retry logic.
💰 Balance & Resource Automation
- Added the new f05 Balance Manager, which automatically monitors and replenishes Market escrow funds.
- Configurable thresholds and automated wallet funding help prevent stalled deals due to low collateral.
🧱 Proofing, Sealing & Snark Market
- Added a vanilla WindowPoSt test command to validate local proof generation and verify proving hardware.
- Snark Market now provides a smoother operator experience:
- Client setup process unbricked and fully functional
- Automatic retries when creating asks under rate limits
- WebUI support for deleting Snark Market clients safely
🗂️ WebUI Enhancements
- Introduced the new Content page for browsing pieces, deals, and CID metadata.
- Completely refreshed Sectors UI, including built-in lifetime extension capabilities via the Sector Extension Manager.
- Improved guided setup experience:
- Miner creation uses a 1.5× FIL safety buffer to prevent underfunding failures
- Clearer configuration path for enabling PDP
- Safer storage-path initialization (no accidental PDP key removal)
🔗 Networking, IPFS & IPNI
- Updated to the latest libp2p release for improved peer discovery and stability.
- Retrievals via Kubo/IPFS now work reliably, including path-based fetches and correct multiaddr advertisement.
- Added IPNI caching, metrics, and cleaned-up logs to enhance retrieval visibility and performance.
- Improved handling of IPFS resource limits for more consistent data movement under heavy load.
🗃️ Database & Core Systems
- More reliable herd database upgrades, avoiding migration stalls or contention.
- Curio Toolkit now supports schema downgrades, enabling safe rollback paths between versions.
- SQL
NULL→ JSON0serialization fix, improving UI clarity when displaying missing numeric fields. - Added migration safety checks that prevent duplicate-column errors.
- Removed the local commcid library in favor of using the upstream implementation.
📚 Documentation
- Updated PDP documentation with clearer steps and improved flow.
- Added full documentation for dynamic configuration capabilities.
- Added
CONTRIBUTING.mdto support community contributors.
🐛 Bug Fixes
🔧 Retrieval & IPFS
- Fixed full compatibility with Kubo/IPFS retrievals, including path-based requests and proper announce-port handling.
- Corrected IPNI advertisement task creation and improved the
canAcceptvalidation logic to prevent invalid or duplicate announcements. - Resolved CARv2 reading issues by properly applying
SourceOffsetduring piece extraction.
🧱 Sealing & Proofing
- Corrected FR32 padding/unpadding logic to ensure accurate alignment of piece data.
- Fixed several internal timing and state-transition inconsistencies affecting sealing and scheduled workflows.
🖥️ WebUI & User Experience
- Resolved a WebUI sector page panic that could occur under certain sector states.
- Fixed a crash when removing pipelines that contained a
nullURL. - Improved PieceCIDv2 handling to ensure correct display and metadata resolution.
- Updated JSON serialization: SQL
NULLvalues are now represented as0, preventing confusing “null” values on the dashboard.
🧩 Indexing & Database Migrations
- Fixed indexing migration errors when moving between older and newer schemas (v1 → v2).
- Ensured migrations are idempotent, preventing repeated “column already exists” failures during startup.
🔄 Internal Workflow Stability
- Fixed edge cases in scheduler begin/end calculations that could cause incorrect task timing.
- Improved task cleanup via Harmony delete retry, preventing rare cases of stuck or orphaned tasks.
- Other minor fixes and stability improvements were made across the codebase to polish this release.
What's Changed
- feat: market 2.0 by @LexLuthr in #508
- ensure column does not exist before adding it by @snadrus in #649
- webui-sector-panic by @snadrus in #648
- Alert on older-than-head failures by @snadrus in #659
- herd-db-upgrade by @snadrus in #657
- docs: revise Enable PDP documentation for clarity and detail by @TippyFlitsUK in #652
- update libp2p by @LexLuthr in #671
- fix: use SourceOffset to support CarV2 by @LexLuthr in #681
- minor Mk20 fixes by @LexLuthr in #672
- feat: test post cli: Vanilla Proof test command by @magik6k in #676
- fix: Snark Market: Unbrick client setup by @magik6k in #686
- feat: f05 balance manager by @magik6k in #682
- Dynamic Config by @snadrus in #664
- docs: update PDP docs section by @TippyFlitsUK in #714
- fix: Make kubo retrievals work by @magik6k in #724
- IPNI caches & metrics by @...
PDP v1.0.0
🧪 PDP-Only Feature Release
This pre-release is intended exclusively for PDP-enabled Storage Providers.
It includes experimental features and updates used internally by the Curio PDP system.
⚠️ Important Notes
Not part of the main Curio release flow.
Not compatible with standard Curio releases or production clusters.
Should be used only by PDP-only SPs for testing or early adoption of PDP functionality.
v1.27.1
✨ Overview
Curio v1.27.1 is a patch release that addresses minor bugs and issues in preparation for the upcoming Network v27 “Golden Week” upgrade on Mainnet.
🔗 Compatibility
This release is compatible with Lotus versions v1.34.1. For the latest compatibility details, refer to the Curio version compatibility matrix.
What's Changed
- Add CORS middleware to web server by @strahe in #629
- Add pagination to ClusterTaskHistory by @strahe in #617
- Enhance node info page with detailed fields by @strahe in #624
- Add WebRPC method to fetch node metrics by @strahe in #621
- send funds with miner create by @LexLuthr in #634
- .gitignore vim by @wjmelements in #632
- remove one-last-thing guided-setup step by @snadrus in #640
- release v1.27.1 by @LexLuthr in #643
Full Changelog: v1.27.0...v1.27.1
v1.27.0
Curio v1.27.0 — Golden Week NV27 Upgrade
✨ Overview
Curio v1.27.0 is a small follow-up release that adds compatibility for the upcoming Network v27 “Golden Week” upgrade, switches the build to Go 1.24, and includes several minor fixes and improvements.
This version also addresses retrieval issues found in v1.26.0 — all users are strongly encouraged to upgrade immediately.
This version is compatible with the NV27 “Golden Week” protocol upgrade. See upgrade scope and dates below (Calibration & Mainnet).
⏰ Upgrade Dates (subject to change as implementations ship)
- Calibration: 2025-09-10 23:00:00 UTC — Epoch 3,007,294
- Mainnet: 2025-09-24 23:00:00 UTC — Epoch 5,348,280
⚠️ Upgrade Notice
- All Curio users must upgrade to v1.27.0 before the corresponding network upgrade activation on Calibration and Mainnet to ensure continued chain compatibility.
- Users running v1.26.0 may encounter retrieval issues — please upgrade directly to v1.27.0.
- This release requires Go 1.24 for building from source.
What's Changed
- Create CODEOWNERS by @BigLep in #611
- park: don't declare nonexistent parked pieces by @magik6k in #609
- fix: proofshare: Always download 32G proving params by @magik6k in #588
- fix: Avoid panic edge-case in the API Proxy by @magik6k in #605
- sender: load signeddata by @magik6k in #610
- fix: yield in PSClientPoll correctly by @magik6k in #601
- fix gc mark snapdeal sector query by @magik6k in #607
- fix proofshare log spam by @magik6k in #608
- add flow EVM Integration by @Reiers in #626
- release v1.27.0 by @LexLuthr in #627
Full Changelog: v1.26.0...v1.27.0
v1.26.0
✨ Overview
Curio v1.26.0 brings major updates for Storage Providers and end-users, including Snark Market integration, significant PDP (Proof of Data Possession) improvements, new wallet management tools, UI enhancements, and numerous bug fixes and optimizations.
🔗 Compatibility
This release is compatible with Lotus versions v1.33.1. For the latest compatibility details, refer to the Curio version compatibility matrix.
⭐ Highlights
- 🧩 Snark Market Integration – Providers can now participate in the decentralized proof marketplace, either selling GPU power for SNARK generation or offloading proofs to others.
- 🔒 PDP Enhancements – More reliable PDP endpoints, readiness checks, and tracking, making provable hot storage smoother and production-ready.
- 👛 Wallet Tools – New Wallet Balance Manager for automatic top-ups and a Wallet Exporter for Prometheus/Grafana monitoring.
- 🖥️ UI Improvements – Easy upgrades with Smart Cordon. Snark Market & PDP have pages & dashboard views for each.
- ⚡ Sealing & Chain Optimizations – CC sector scheduler, Supra NVMe inference, commit gas estimation fixes, and chain scheduler robustness improvements.
You can read more about Curio in our documentation.
🛠 Improvements
- Content Security Policy (CSP) support for stronger API/UI security.
- Auto-detection of Supra NVMe devices for faster sealing setup.
- Config option for maximized gas fee cap during chain congestion.
- Documentation updates (SPDK binary paths, Snark Market intro).
🐛 Bug Fixes
- Fixed missing paths in Garbage Collection UI.
- Verified deals <1 MiB now supported.
- Chain scheduler more robust with improved ETH tx monitoring.
- Fixed PDP proof-sets handling for uninitialized states.
- Fixed wallet exporter stability and batch commit gas estimation.
📊 What's Changed
- chore(cors): expose Location header to JS for PDP by @rvagg in #513
- fix(piecereader): separate error cache with shorter timeout by @rvagg in #514
- remove outdated branch checkout by @ZenGround0 in #524
- feat: add configurable Content Security Policy (CSP) support by @davidgasquez in #517
- chore(deps): bump github.com/pion/interceptor from 0.1.37 to 0.1.39 by @dependabot[bot] in #522
- feat(pdp): tigher busy waiting by @rvagg in #532
- fix(pdp): look in pdp piecerefs to check for actual readiness by @rvagg in #533
- feat(pdp): add AddRoots tracking endpoints by @rvagg in #535
- docs: update README to use correct SPDK identify binary path by @asamuj in #531
- fix gc page with missing paths by @magik6k in #546
- Snark Market Provider Setup (not client) by @Reiers in #555
- ci: create add-issues-and-prs-to-fs-project-board.yml by @BigLep in #561
- feat(pdp): PDP enhancements by @jennijuju in #556
- fix: allow less than 1 MiB verified deal by @LexLuthr in #563
- fix: use pull_request_target for FS working group CI job by @BigLep in #565
- chore(deps): bump github.com/go-chi/chi/v5 from 5.2.1 to 5.2.2 by @dependabot[bot] in #544
- fix(pdp): GET /pdp/proof-sets/{id} - handle uninitialised proof sets by @rvagg in #559
- feat: infer supra nvme devices by @magik6k in #564
- Wallet Balance Manager by @magik6k in #568
- fix(pdptool): Skip JWT auth for public service by @TippyFlitsUK in #566
- fix(chain): improve chain scheduler robustness and eth tx monitoring by @rvagg in #552
- fix(pdptool): rename --recordkeeper to --pdp-service-contract in crea… by @rjan90 in #571
- feat: Node cordon button in the UI by @magik6k in #573
- fix: extend CurioChainSched timeout, isolate ctx cancellation by @rvagg in #575
- docs: Improve snark market intro by @magik6k in #572
- Curio Snark Marketplace by @magik6k in #484
- feat: wallet exporter by @magik6k in #574
- fix wallet exporter, supra allocs, config doc by @magik6k in #581
- docs: Snark market is now in main by @magik6k in #583
- fix: per sector commit simulation by @LexLuthr in #567
- fix: remove storage flag from wd-test by @LexLuthr in #586
- feat: CC Sector scheduler by @magik6k in #582
- feat: Snark Market support in Balance Manager by @magik6k in #594
- feat: Smart Cordon, Restart Requests by @magik6k in #595
- feat: config for maximized feecap by @magik6k in #597
- fix individual batch commit gas estimate gas error by @magik6k in #602
- release v1.26.0 by @LexLuthr in #598
👥 New Contributors
- @davidgasquez made their first contribution in #517
- @asamuj made their first contribution in #531
- @BigLep made their first contribution in #561
- @jennijuju made their first contribution in #556
Full Changelog: v1.25.1...v1.26.0
v1.25.1
Overview
We are excited to introduce Curio v1.25.1. This release brings the debut of the Proof Declaration Protocol (PDP), empowering storage providers with verifiable hot storage capabilities alongside various improvements and fixes.
You can read more about Curio in our documentation.
Compatibility
This release is compatible with Lotus versions v1.33.0. For the latest compatibility details, refer to the Curio version compatibility matrix.
⭐ Highlights
Proof Declaration Protocol (PDP)
Proof Declaration Protocol (Proof of Data Possession) is now supported in Curio, introducing a new on-demand proof mechanism for hot storage. With PDP, storage providers can cryptographically prove they hold an unsealed, immediately available copy of client data without the need to retrieve or unseal it. This new feature unlocks fast, verifiable retrieval use cases and complements Filecoin’s existing sealed storage (PoRep) by enabling a hot storage tier:
-
On-demand Proofs: Clients can challenge a storage provider at any time to quickly verify data availability via small random spot-checks (~160 bytes per challenge).
-
No Sealing/Unsealing Required: Data remains in raw form, eliminating sealing delays and making it suitable for real-time applications (e.g. web services, AI datasets).
-
Dynamic Datasets: PDP allows adding or removing data from proof sets, supporting mutable data collections that can be updated on the fly.
-
Easy Setup: Curio includes a new pdptool CLI for managing PDP proofs – providers can create ProofSets, upload files to be included in PDP, and declare proofs on-chain. No GPUs are required to participate in PDP, lowering the barrier to entry for hot storage providers.
This PDP integration is backed by smart contracts on the Filecoin network (FEVM), ensuring verifiable on-chain proof of data possession. Storage providers can now offer verifiable hot storage services with sub-second data access. 🚀
🛠️ Improvements
-
HTTP-Based MK12 Deals: Curio’s market now supports HTTP-based deal making for storage deals (Boost-style MK12 deals).
-
Optional CUDA Dependency: Installing and running Curio in a PDP-only mode no longer requires CUDA libraries. Users focusing solely on PDP operations can deploy Curio on machines without GPUs – make install now succeeds without CUDA, avoiding previous installation errors.
-
Missing Sector Alerts: Added proactive alerts for any missing sector files in storage. Curio will now flag missing or inaccessible sector data, helping operators quickly detect and resolve issues related to lost or moved sector files.
-
Message Fixer Tool: A new CLI tool is available to sync message status from Filfox. In case a message gets stuck or missed, operators can update the message with on-chain state fetched from the Filfox explorer to reconcile Curio’s view with the chain. Ex:
curio toolbox fix-msg --all -
Cheaper ProveCommit Aggregation: Curio’s prove commit message aggregation no longer relies on fee thresholds. Instead, batching is governed by time and size limits as per network parameters. This aligns with the latest network upgrade (e.g. FIP-0100) by removing the batch balancer.
Web UI Enhancements
-
Pending Messages: The UI now displays pending chain messages (such as deal publish or proof submissions) so providers can track on-chain operations awaiting inclusion.
-
PDP ProofSet View: Introduced PDP support in the UI, allowing providers to view and inspect PDP ProofSets and associated pieces through the browser. This ensures PDP data and status are visible and manageable via the dashboard.
🐞 Bug Fixes
-
UI Sector List: Fixed the Web UI’s sector list to properly show expired sectors. Previously expired/terminated sectors were hidden; the UI now correctly displays them, providing an accurate view of all sector states.
-
WindowPoSt Handling: Resolved several issues with Window PoSt tasks. Curio will now cancel a WindowPoSt task if the deadline has passed (preventing false failure logs), and the cancellation conditions have been corrected to avoid stuck WdPoSt processes. These fixes improve reliability and ensure no erroneous alerts for skipped or late proofs.
-
Deal Ingestion & Piece Locator: Fixed an issue with the piece locator’s database transaction during deal ingestion (FindURL). The offline deal data fetch now operates within the proper transaction scope, eliminating errors when adding piece URLs.
-
Build Process: The make batch build process has been fixed by separating out the sptool build. This resolves prior build failures when running batch build tasks and updates the documentation accordingly.
What's Changed
- fix: batch build by @LexLuthr in #470
- use correct parameters for aggregation by @LexLuthr in #479
- Update Makefile for Non-CUDA Installs by @TippyFlitsUK in #481
- fix: UI sector list for expired sectors by @LexLuthr in #463
- wdpost should cancel if deadline is closed by @LexLuthr in #462
- http based mk12 deals by @LexLuthr in #469
- chore(deps): bump golang.org/x/net from 0.37.0 to 0.38.0 by @dependabot in #482
- fix: findURL transaction by @LexLuthr in #495
- feat: PDP by @magik6k in #227
- chore(deps): bump github.com/golang-jwt/jwt/v4 from 4.5.1 to 4.5.2 by @dependabot in #500
- alert for missing sectors by @LexLuthr in #486
- fix: wdPost by @LexLuthr in #499
- feat: pending messages in UI by @LexLuthr in #490
- tool to update msg watcher from FilFox if required by @LexLuthr in #487
- pdp browser rendering by @LexLuthr in #498
- no fee based aggregation/batching by @LexLuthr in #492
- fix: wdPost cancel condition by @LexLuthr in #503
- fix piecepark conflict spec in deal ingest by @magik6k in #504
- use full node for eth client by @LexLuthr in #509
- release v1.25.1 by @LexLuthr in #510
- update lotus 1.33.0 by @LexLuthr in #511
Full Changelog: v1.25.0...v1.25.1
v1.25.0
Overview
We are excited to introduce Curio v1.25.0. This release enable the Filecoin Network upgrade to NV25 for Curio.
📖 You can read more about Curio in our documentation.
Compatibility
This release is compatible with Lotus versionv1.32.2. For the latest compatibility details, refer to the Curio version compatibility matrix.
⭐ Highlights
Balance Manager
The Balance Manager is a subsystem within Curio responsible for automatically managing balances for certain actors. Currently, it is used to top up deal collateral when the available balance falls below a defined threshold. In future iterations, the Balance Manager will be extended to handle control addresses and other balance-related operations.
CIDGravity Integration
Curio supports CIDGravity as external deal filter. CIDGravity is a powerful pricing and client management tool designed for Filecoin storage providers. It enables storage providers to efficiently filter storage and retrieval deals through a user-friendly interface. With CIDGravity, providers can set rules and policies for accepting or rejecting deals based on their business preferences, ensuring better control over their storage operations.
Human-friendly wallet names
Curio now supports assigning human-friendly names to wallets and PeerIDs through the new Wallets page in the UI. Once an entry is added, the UI will display the assigned name instead of the raw value. Names can be edited or deleted directly from the Wallets page.
🏗️ Improvements
BindSDRTreeToNodeconfiguration option now ensures TreeD and TreeRC tasks run on the same node as the SDR task for improved data locality. Make sure TreeD and TreeRC tasks are enabled with sufficient resources before enabling this option.- New cli flag
--db-cassandra-portallows users to choose a non default CQL API port for connecting to YugabyteDB CQL APIs. - PreCommit and Commit batch creation logic has been fully migrated to SQL to improve consistency. This eliminates race conditions that previously led to the same sector being assigned to multiple batches.
- SupraSeal Batching: Fixed incorrect assumptions about hasher behaviour, resolving issues in single-hasher configurations.
🐛 Bug Fixes
- Resolved the "0 rows found" error when deleting a deal pipeline from the UI.
- Fixed an issue where sealed sectors were not reflected in the deal pipeline, causing deal processing to get stuck.
- Fixed a bug where an unsealed copy was always retained, even when the deal explicitly specified not to keep it.
What's Changed
- feat: CID gravity connector by @LexLuthr in #407
- fix: deal removal and list by @LexLuthr in #428
- Add Prometheus service discovery endpoint by @strahe in #430
- feat: index sample command by @LexLuthr in #432
- fix: Update config comment with expected input and defaults by @LexLuthr in #427
- fix: Correct supra single hasher core assignments by @magik6k in #426
- feat: multi miner cid gravity connector by @LexLuthr in #433
- fix: mark deal sealed in a DB transaction by @LexLuthr in #434
- update curio cli flags by @LexLuthr in #441
- update slack alert format by @LexLuthr in #423
- bye bye circleci by @LexLuthr in #443
- run GA on all PR events by @LexLuthr in #445
- CID Gravity handles backpressure rejection by @LexLuthr in #440
- feat: option to bind TreeD to SDR node by @LexLuthr in #442
- SQL based batch creation by @LexLuthr in #438
- feat: Balance Manager by @LexLuthr in #431
- feat: nv25 by @LexLuthr in #446
- menu drawer by @LexLuthr in #429
- feat: add Curio PDP docs by @rjan90 in #447
- make postgres load balance optional by @LexLuthr in #451
- fix: store log debug, seal poller log, batching, itest by @LexLuthr in #450
- feat: add transfer type to cidgravity payload by @FlorianRuen in #452
- fix: keep unsealed for f05 deals by @LexLuthr in #459
- fix: phantom IPNI tasks by @LexLuthr in #454
- fix cidgravity ipni and indexing value by @LexLuthr in #457
- fix UI wallet name on actor detail page by @LexLuthr in #455
- Fix panic in allocateToExisting by @strahe in #460
- fix: bulk pipeline restart by @LexLuthr in #458
- chore(deps): bump @babel/runtime from 7.26.0 to 7.26.10 in /market/ipni/spark/sol by @dependabot in #444
- release v1.25.0 by @LexLuthr in #456
- wallet friendly names by @snadrus in #317
- update lotus version for devnet, undo menu drawer by @LexLuthr in #461
- fix: NV25 upgrade by @LexLuthr in #468
New Contributors
- @rjan90 made their first contribution in #447
- @FlorianRuen made their first contribution in #452
Full Changelog: 1.24.5...v1.25.0