Changelog 2026
ΒΆ
Note
Get notified by watching releases for git repositories: lamindb, laminhub-public, laminr, nf-lamin, and bionty.
2026-02-27 blogΒΆ
π Symbolic memory for biological R&D PR @falexwolf
2026-02-26 hub 1.16.5ΒΆ
π Fix allowed suffixes in launch input selection PR @sunnyosun
2026-02-25 hub 1.16.4ΒΆ
πΈ Respect Nextflow MIME suffix behavior in Launch page inputs form PR @sunnyosun
π Account for recreated artifacts and recreated collections in lineage explorer PR @falexwolf
π Display run entrypoints in transform, run, and lineage views PR @falexwolf
π Pricing page v2 PR @falexwolf
2026-02-24 db 2.2.1ΒΆ
πΈ Add backward compat for
lamin switch --branchPR @falexwolfπΈ Improve logging during
@ln.flow()and@ln.step()PR @falexwolfπΈ Enable defining a feature that restricts to a subset of artifacts PR @falexwolf
πΈ Better handling of problematic access token refreshes PR @Koncopd
2026-02-19 db 2.2.0ΒΆ
β οΈ Run lamin migrate deploy
All instances connected to LaminHub have been migrated and there is no need to act.
If you are an admin of a self-managed instance, please migrate your database with lamin migrate deploy.
For details see the Compatibility Matrix and the source code.
Examples: Change management with branching, merging, and Merge Requests
To create a contribution branch and switch to it, run:
lamin switch -c my_branch
To merge a contribution branch into main, run:
lamin switch main # switch to the main branch
lamin merge my_branch # merge contribution branch into main
To see the current branch along with other information, run:
lamin info
To annotate the current branch with a README.md, run:
lamin annotate branch --readme README.md
To comment on the current branch, run:
lamin annotate branch --comment "I think we should revisit this, tomorrow, WDYT?"
To describe the current branch (optionally include comments), run:
lamin describe branch --include comments
To trace on which branch a SQLRecord object was created, run:
sqlrecord.created_on.describe()
To open a Merge Request for a branch:
lamin update branch --status draft # for current branch
lamin update branch --name my_branch --status review # for any branch
Just like Pull Requests on GitHub, branches are never deleted so that the provenance of a change stays traceable.
For more info, see: docs.lamin.ai/lamindb.branch
Examples: Agent plan traceability
Saving an agent plan automatically tags with artifact.kind = "plan" and infers a key starting with .plans/:
lamin save /path/to/.cursor/plans/my_task.plan.md
lamin save /path/to/.claude/plans/my_task.md
Link an agent plan against a run:
ln.track(plan=".plans/my-agent-plan.md")
This will link the plan artifact to a run in the same way in which transform, an initiating run (initiated_by_run) and report/environment artifacts are linked to the run.
While the transform acts as the deterministic source code for the run and initiated_by_run enables higher-level runs in workflow orchestration, the agent plan complements these two by allowing the linkage of plan that steers a non-determinitic agent.
Highlights:
β¨ Add
lamin mergecommand, addlamin switch -coption & simplifylamin switchsyntax PR @falexwolf⨠Add agent plan traceability PR @falexwolf
β¨ Enable linking a
README.mdto and commenting for any entity PR @falexwolf⨠Introduce Merge Request states on branches PR @falexwolf
β¨ Add
lamin updateand homogenizelamin getwith other commands PR @falexwolf
UX:
πΈ Quality of life improvements for saving via the CLI: saving plans, sync with git, annotating with version tags PR @falexwolf
πΈ Extend
lamin describeto more entities PR @falexwolfπΈ Prettier display for
dtypeforRecordandULabelsub types inschema.describe()PR @falexwolfπΈ Track
record_type.to_dataframe()as an input for the current run PR @falexwolfπΈ Make it easier to query for all output artifacts including recreated ones PR @falexwolf
πΈ Include comments in
SQLRecord.describe()when passinginclude = "comments"PR @falexwolfπΈ Include comments in
lamin describeupon--include commentsPR @falexwolfπΈ Re-raise
InvalidArgumentinlamin annotateasClickExceptionPR @falexwolfπΈ Nicer error for
lamin switchto non-existing branch PR @falexwolf
Performance:
β‘ Speed-up lamindb import by lazily importing pandas, anndata & pyarrow PR @falexwolf @Zethson @Koncopd
Architecture:
ποΈ Reconcile
is_lateststate across branches PR @falexwolf
Database:
ποΈ Add a
_status_code: intfield toBranchandBaseBlockPR @falexwolf
Bux fixes:
Docs:
π Add videos to docs, polish typos and wording PR @falexwolf
Security:
Dependencies:
2026-02-19 hub 1.16.3ΒΆ
π Fix between-page sidebar type navigation PR @chaichontat
π Fix pagination bar position in sheets PR @sunnyosun
π Run metadata settings includes the dtype sheet when a feature has the same dtype PR @chaichontat
2026-02-18 hub 1.16.2ΒΆ
β¬οΈ Upgrade to LaminDB v2.2a3 PR @falexwolf
2026-02-17 hub 1.16.1ΒΆ
πΈ Fix clunky UX in left sidebar of typed entities PR @chaichontat
π Simplify features header in artifact detail page, should be βValuesβ not βCategories / Valuesβ PR @falexwolf
2026-02-15 hub 1.16.0ΒΆ
β¬οΈ Enable compatibility with lamindb 2.2
π Do not show
pertdblink tables PR @sunnyosunπ Fix text truncation in list cells of sheets PR @sunnyosun
π Fix badge for recreated output artifacts PR @sunnyosun
2026-02-12 hub 1.15.2ΒΆ
πΈ Support more path types from nextflow schema PR @sunnyosun
π Fix
pertdbcopy button content PR @sunnyosun
2026-02-11 hub 1.15.1ΒΆ
π Fix
Projectfeature link PR @sunnyosun
2026-02-11 nf 0.5.1ΒΆ
2026-02-10 hub 1.15.0ΒΆ
High-level organization of the top navbar:
π Move
Recordstab to the left ofFeaturesPR @sunnyosunπ Move
ULabelsunderRecordstab PR @sunnyosunπ Fix string truncation display in sheets PR @sunnyosun
2026-02-09 db 2.1.2ΒΆ
UX:
Performance:
Bug fixes:
2026-02-09 hub 1.14.0ΒΆ
πΈ Better experience saving markdown notes PR @chaichontat
π Fix text overflow for sheet names on
Launchpage PR @chaichontatπ Fix the count & filtering for recreated artifacts in the run input/output panes PR @sunnyosun
π More robust error handling for account handle suggestions PR @chaichontat
π Properly show a 404 response for artifacts when non-existent PR @chaichontat
π Polish the
Overviewpage PR @ninhja01 @chaichontatπ Display run params PR @falexwolf
π Add the story to the About page PR @falexwolf @chaichontat
2026-02-02 db 2.1.1ΒΆ
UX:
πΈ Better detection of read-only connections for write errors and tracking PR @Koncopd
πΈ A
lamin settings cache-dir resetCLI command for resetting the cache directory to the default path PR @KoncopdπΈ A
S3QueryPath.is_bucket_versioned()method to check if the bucket in an s3 path is versioned PR @Koncopd
Bug fixes:
2026-02-03 nf 0.5.0ΒΆ
This release revamps the configuration (nextflow.config) for more control over which artifacts are registered and which metadata is attached (kind, projects, ulabels). Here is an example Nextflow config:
lamin {
instance = "laminlabs/lamindata"
api_key = secrets.LAMIN_API_KEY
output_artifacts {
rules {
output {
pattern = ".*"
order = 1
type = "include"
project_uids = ["AbCdEfGhIjKl"]
ulabel_uids = ["AbCd0123"]
}
// don't publish state.yaml files
yaml {
pattern = ".*\\.state\\.yaml"
type = "exclude"
order = 10
}
}
}
}
New functionality:
β¨ Control which files are registered as artifacts using pattern-based rules PR @rcannood
β¨ Link projects and ulabels to transforms, runs, and artifacts with new
runandtransformconfig sections for granular control PR @rcannood⨠New
apisection for connection settings replaces root-level fields PR @rcannood
UX:
Bug fixes:
Deprecations: The following API components are now deprecated and are scheduled for removal in v0.6
Type |
Deprecated |
Replacement |
|---|---|---|
Config |
|
|
Config |
|
|
Function |
|
|
2026-02-02 db 2.1.0 | bionty 2.1.0ΒΆ
MLOps:
πΈ Overhaul the pytorch
lightningintegration PR @Zethson @jorenretel
Notebooks, scripts, workflows:
πΈ Recognize packaged python source code across
track(),@flow(), and@step()PR @falexwolfπΈ Default to creating a global run context in
ln.flow()PR @falexwolfπΈ Serialize
Path,UPath, and handleNonein transformparamsPR @falexwolfπΈ Reflect user CLI calls in transform description PR @falexwolf
πΈ Improve error message for running a script or notebook outside the development directory PR @falexwolf
Validation:
πΈ Unify validating features with and without the presence of a schema, fix parsing ISO-format strings as datetime if mapped on a feature with
dtype=strPR @falexwolf
CLI:
πΈ Delete records via CLI PR @falexwolf
πΈ Better error behavior in
lamin savewhen transform is on a different branch PR @sunnyosun
General UX:
πΈ Enable convenient re-upload of local file after upload failure PR @falexwolf
πΈ Return information about deleted objects rather than
Noneupon hard delete PR @falexwolfπΈ Introduce safe-guards in updating the space of artifacts PR @Koncopd
πΈ Switch on SQL logging if
ln.settings.verbosityis"debug"PR @sunnyosunπΈ Raise canonical
InstanceNotFoundErrorinRegistry.connect()PR @falexwolfπΈ Allow users to pass ids of foreign keys in
Artifact()constructor PR @KoncopdπΈ Check local path existence on
artifact.save()PR @Koncopd
Performance:
β‘οΈ Much faster permanent run & transform deletion PR @falexwolf
β‘οΈ 1 sec speed-up for basic CLI calls through optimized
lamindb_setupimport time PR @falexwolf
Ontology updates in bionty:
πΈ Default the
CellLinesource tocellosaurusPR @sunnyosunπΈ More robust
add_sourcePR @sunnyosunπΈ Allow users to set
biontyroot dir viaBIONTY_ROOT_DIRenv variable PR @Koncopdπ± New ontology version: Gene, release-114 PR PR @sunnyosun @Zethson
π± New ontology version: Gene, release-113 PR @sunnyosun
π± New ontology version: Organism PR @sunnyosun
π± Update standard ontologies PR @sunnyosun
Better conventions in CLI (backward compatible):
π Support
key-based deletion inlamin deletePR @falexwolfπ
lamin cacheis nowlamin settings cache-dir, refactor settings managemennt PR @falexwolfπ More consistent
lamin switchandlamin createcommands PR @falexwolf
The wetlab plugin was renamed to pertdb (backward compatible):
π Rename
wetlabtopertdbPR @falexwolf
Bugs:
π Refactor & fix feature-based queries for records PR @falexwolf
π Fix
Artifact.from_dataframe()to support path input PR @Zethson
Docs:
π Convert guides to markdown format PR @falexwolf
π Legible API reference for
lamindb.modelsPR @falexwolfπ Consistent reference to Python/R alternative for all CLI commands, expand
lamin annotatePR @falexwolfπ Document backward relationships and add
RelatedManager[T]toManyToManytype annotations PR PR @falexwolfπ README improvements PR @falexwolf
Refactoring:
β»οΈ Rather flag
_storage_ongoingthan_storage_completedPR @falexwolfβ»οΈ Efficiently encode uploading information PR @falexwolf
β»οΈ Fully leverage
Contextto manage the run context of function executions PR @falexwolf
2026-01-31 hub 1.13.0ΒΆ
β‘ Update JWT signing from HS256 to ES256 for better performance PR @fredericenard
π Display output and input records on run detail page PR @falexwolf
2026-01-27 hub 1.12.1ΒΆ
π Fix an issue in the Seqera Launch connector PR @chaichontat
2026-01-26 hub 1.12.0ΒΆ
β¨ Configurable default Seqera workspace and compute environment PR @chaichontat
β¨ Two new endpoints to help users authenticate and interact with instances through the API PR @fredericenard
π Fix attaching a space to an instance in case an org admin isnβt a collaborator of that space PR @fredericenard
π Prevent empty results when searching Artifacts PR @chaichontat
π Landing page: re-format taglines and update schematic PR @chaichontat
2026-01-21 nf 0.4.0ΒΆ
β¨ This release allows for the automatic tracking of input artifacts by discovering their remote URIs, using functionality implemented in Nextflow 25.10. Hence, it requires Nextflow >=25.10.0 PR @rcannood
export NXF_VER=25.10.2
nextflow run <pipeline> \
--input "https://raw.githubusercontent.com/..." \
-with-report report.html
2026-01-20 hub 1.11.0ΒΆ
β¨ Beta: A Logs page with
DbWriteevents PR - frontend: @chaichontat backend: @Koncopd⨠Support children type in record registration PR @chaichontat
πΈ Handle suggestions when adding users PR @chaichontat
π Fix run metadata selection state PR @chaichontat
π Show records on the overview page PR @falexwolf
2026-01-14 hub 1.10.0ΒΆ
β¨ Add
/artifacts/by-pathendpoint PR @fredericenardπ Write run annotations on the Launch page into the
RunRecordregistry PR @falexwolfπ Improve landing page - metadata and lakehouse sections PR @falexwolf
2026-01-13 hub 1.9.1ΒΆ
π More strictly enforce schema during UI-based record creation PR @chaichontat
π Broaden database server access permissions to include shared database servers PR @fredericenard
π Improve landing page - introduce tags and improve language PR @falexwolf
2026-01-13 R 1.2.2ΒΆ
β¬οΈ Update minimal
lamindbversion to 2.0.0 PR @falexwolf PR @lazappi
2026-01-12 nf 0.3.0ΒΆ
2026-01-12 hub 1.9.0ΒΆ
β¨ Transform search bar also understands run names and UIDs PR @chaichontat
πΈ Default to not listing inferred schemas without names PR @chaichontat
π Fix the broken βNew schemaβ button on the records page due to
lamindbv2 PR @chaichontatπ Fix the broken pipeline
Launchbutton due tolamindbv2 PR @sunnyosun
2026-01-11 db 2.0.1ΒΆ
πΈ Backward compatibility for querying features by
dtypePR @falexwolf
2026-01-11 db 2.0.0ΒΆ
This release makes the database schema fully consistent and thereby improves UX, integrity, and enables long-term stability.
β οΈ With the exception of previous deprecations, your code continues to run as is, but you will receive new warnings about renamed API components.
Main changes:
What |
Before |
After |
Backward compatible |
|---|---|---|---|
Function tracking |
|
|
β |
|
|
|
β |
|
|
|
β |
|
|
|
β |
|
|
|
β |
|
|
|
β |
|
|
|
β |
|
|
|
β |
|
|
|
β |
Private fields that are now public:
What |
Before |
After |
Backward compatible |
|---|---|---|---|
|
|
|
β |
|
|
|
β |
|
|
|
β |
|
|
|
β |
Changes to auxiliary (JSON) fields:
What |
Before |
After |
Backward compatible |
|---|---|---|---|
|
|
|
β |
|
|
|
β |
|
|
|
β |
|
|
|
β |
|
|
|
β |
On link models with labels:
What |
Before |
After |
Backward compatible |
|---|---|---|---|
|
|
removed |
β |
|
|
removed |
β |
For completeness, changes in recently introduced unused API components:
What |
Before |
After |
Backward compatible |
|---|---|---|---|
|
|
|
β |
|
|
|
β |
|
|
|
β |
|
|
removed |
β |
|
|
removed |
β |
|
|
removed |
β |
|
|
removed |
β |
|
|
removed |
β |
Changes in the bionty and wetlab modules:
What |
Before |
After |
Backward compatible |
|---|---|---|---|
|
|
|
|
* uids are re-encoded to 14 chars with the first X chars conserved.
Changes in the wetlab module:
What |
Before |
After |
Backward compatible |
|---|---|---|---|
|
|
removed |
β |
|
|
removed |
β |
|
|
removed |
β |
|
|
removed |
β |
|
|
removed |
β |
|
|
|
β |
|
|
removed |
β |
|
|
β |
If you have data in removed registries youβll see a warning that your data gets exported to parquet files. You can import these parquet files into the Record registry under an Experiment type without losing of functionality.
β οΈ After migrating databases to v2 via lamin migrate deploy lamindb package installations with v1 will raise errors. This is the last planned database migration that breaks older clients.
All instances connected to LaminHub have been migrated and there is no need to act.
If you are an admin of a self-managed instance, please migrate your database with lamin migrate deploy.
For details see the Compatibility Matrix and the source code.
β οΈ For laminr and nf-lamin users
For laminr users with an auto-managed reticulate environment, please run this:
reticulate::py_require("lamindb>=2.0.1") # DO THIS FIRST
ln <- laminr::import_module("lamindb")
For nf-lamin users, please upgrade to 0.3.0.
Removals:
π₯ Remove deprecated v1 API components PR @falexwolf
Features:
β¨ Track shell scripts PR @falexwolf
β¨ Enable managing workflows by decorating functions with
@ln.flow()and@ln.step()and deprecate@ln.tracked()PR @falexwolf
Architecture:
ποΈ For more robustness and to convey the fieldβs special nature in the API and the database schema, replace
Feature.dtypewithFeature._dtype_strto now hold a serialization that links object types (Record+ULabel) based on theiruidinstead of theirnameand type hierarchy PR @falexwolf
UX:
πΈ Add
feature.dtype_as_objectPR @sunnyosunπΈ Add
descriptionargument toTransform.from_git()PR @falexwolfπΈ Allow passing
_key_is_virtualonArtifactcreation PR @KoncopdπΈ Raise
SystemExituponInstanceNotFoundonly from CLI PR @falexwolfπΈ Raise error for init or import issues in
lamin io snapshotPR @ZethsonπΈ Do not track inputs when calling
collection.artifacts.all()PR @KoncopdπΈ Raise a clear error if calling
CanCurateand similar registry class methods on objects PR @falexwolfπΈ Sort features in
describe()PR @falexwolf
Database-level changes:
ποΈ Rename
RootBlocktoBlockwith a columnkeyakin toArtifactandTransformPR @falexwolfποΈ Refactor
_storage_completedmechanism and remove unique constraints on type names PR @falexwolfποΈ Migrate most auxiliary fields to SQL columns PR @falexwolf
ποΈ Simplify
TransformPR @falexwolfποΈ Rename
IsVersioned.versiontoIsVersioned.version_tag,Transform.typetoTransform.kind,FeatureValuetoJsonValue,BaseBlock.typetoBaseBlock.kind, deleteTransform._templateandRun._logfilePR @falexwolfποΈ Rename
Artifact._subsequent_runstoArtifact.recreating_runsandRun._recreated_artifactstoRun.recreated_artifactsPR @falexwolfποΈ Rename
SQLRecord._branch_codetoSQLRecord.branch_idand removefeature_ref_is_nameandlabel_ref_is_namefields from link models PR @falexwolfποΈ Rename
Artifact.feature_setstoArtifact.schemasPR @falexwolfποΈ Migrate the
FeatureandSchemadatabase tables to LaminDB v2 PR @falexwolfποΈ Swap accessor names for
SchemaComponentlinks, consistentManyToManyfield names forRecordRecordlinks PR @falexwolfποΈ Better names for the
ManyToManyfields for the annotating runs and artifacts of anArtifactPR @falexwolf
Bug fixes:
π Account for size 0 environments PR @falexwolf
Bionty:
π¨ Re-encode BioRecord uid to 14 chars PR @sunnyosun
ποΈ Migrations for bionty v2 PR @sunnyosun
β»οΈ Refactor require_organism PR @sunnyosun
ποΈ Migrations for LaminDB v2 PR @falexwolf
π₯ Remove deprecated
display_available_sourcesPR @falexwolf
Wetlab:
ποΈ Migrations for wetlab v2 PR @sunnyosun
ποΈ Migrations for LaminDB v2 PR @falexwolf
ποΈ Create a composite index for
artifact,perturbationtargetfields inArtifactPerturbationTargetPR @KoncopdποΈ Create a composite index for
artifact,geneticperturbationfields inArtifactGeneticPerturbationPR @Koncopd
Docs:
π Improve the
Spacedocument PR @falexwolfπ Improve the
Artifact.replace()docs PR @falexwolfπ Improve FAQ doc on trashing and archiving PR @falexwolf
π Render return type annotations of
Artifact.open()in docs PR @falexwolf
Config:
π§ Introduce
InstanceSettings.is_managed_by_hubPR @falexwolfπ§ Add
.vitessce.jsonto loaders PR @namsaraeva
Refactoring:
β»οΈ Refactor
require_organismPR @sunnyosunβ»οΈ Better re-use Djangoβs
ObjectDoesNotExistandMultipleObjectsReturnedPR @falexwolfβ»οΈ Return file size in
hash_file()PR @falexwolfβ»οΈ Squash migrations and re-build SQLite init database PR @falexwolf
β»οΈ More verbose migration integrity check PR @falexwolf
β»οΈ Call
lamin migrate deployeven if initializing from pre-built sqlite file PR @falexwolf
Dependencies:
2026-01-11 hub 1.8.0ΒΆ
π Fix special character handling in filters PR @chaichontat
π Fix filtering state leakage across different pages PR @chaichontat
π Fix feature hover card not functioning correctly PR @chaichontat
2026-01-03 hub 1.7.0ΒΆ
πΈ Infinite scroll for transform list PR @chaichontat
π Update data validation video PR @namsaraeva
π Improve language on landing page PR @falexwolf