<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/pnpm-12-1-t8eddazp5" -->

---
title: pnpm 12.1 | daily.dev
description: pnpm 12.1 introduces a new workspace task scheduler (ported to the Rust CLI) that dispatches projects as soon as dependencies finish rather than waiting for...
canonical: https://daily.dev/posts/pnpm-12-1-t8eddazp5
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: pnpm 12.1 | daily.dev
og:description: pnpm 12.1 introduces a new workspace task scheduler (ported to the Rust CLI) that dispatches projects as soon as dependencies finish rather than waiting for...
og:url: https://daily.dev/posts/pnpm-12-1-t8eddazp5
og:image: https://api.daily.dev/og/posts/t8eDDAZp5.png
og:image:alt: pnpm 12.1
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# pnpm 12.1

**[Fast, disk space efficient package manager \| pnpm](https://daily.dev/sources/pnpm-blog)** · 5 min read · 5 upvotes · 0 comments

## Summary

pnpm 12.1 introduces a new workspace task scheduler (ported to the Rust CLI) that dispatches projects as soon as dependencies finish rather than waiting for topological groups, and persists successful recursive run/exec tasks for precise --resume-from retries. Shared build artifacts now work across Linux, macOS, and Windows on x64/arm64, with a changed protocol requiring matching pnpm and pnpr versions. Login and logout now write credentials into pnpm's structured global config.yaml instead of auth.ini. The companion pnpr server (0.1.0-alpha.9) makes the artifact tier independently scalable via S3-compatible storage, with immutable publication slots and idempotent retries. Numerous patch fixes cover authentication parsing, clean/purge scoping, catalog resolution, Windows pnpmfile loading, update safety, and install performance (including a macOS warm-install regression fix).

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://pnpm.io/blog/releases/12.1>

## Questions this post answers

### How does the pnpm 12.1 workspace task scheduler decide when to start a project's script?

pnpm -r run and pnpm -r exec now dispatch a project as soon as its dependencies finish, instead of waiting for an entire topological group to complete. Recursive scripts can declare cross-task relationships and per-task concurrency under a tasks field, and the scheduler detects cycles, supports --dry-run --json graph output, and cancels in-flight work under the default --bail flag.

_Teams tuning monorepo build speed can track scheduler changes like this one on daily.dev._

### Where does pnpm 12.1 store login credentials instead of auth.ini?

pnpm login and pnpm adduser now write the granted token into the global config.yaml under the _auth field rather than auth.ini. When used with --scope, the scope is also added to that registry's global registries declaration, tying the credential to its route; pnpm logout removes entries from config.yaml but still cleans up any leftover auth.ini from older pnpm versions.

_Anyone maintaining CI authentication configs can follow credential storage changes like this on daily.dev._

### Which platforms does pnpm's shared build artifact cache support as of pnpm 12.1?

Remote build artifacts now support Linux/glibc, macOS, and Windows on both x64 and arm64, an expansion from the prior Linux-only support. The underlying protocol changed to use discriminated subjects so dependency side effects and workspace task artifacts cannot collide, meaning pnpm clients and pnpr servers must run matching versions after this update.

_Developers rolling out shared caches across mixed-OS teams can watch protocol changes like this via daily.dev._

## Similar posts on daily.dev

- [pnpm 11.25](https://daily.dev/posts/pnpm-11-25-jlgejzm35) · Fast, disk space efficient package manager \| pnpm · 13 upvotes · 1 comments

---

Tags: [#general-programming](https://daily.dev/tags/general-programming), [#nodejs](https://daily.dev/tags/nodejs), [#pnpm](https://daily.dev/tags/pnpm)

[View this post on daily.dev](https://daily.dev/posts/pnpm-12-1-t8eddazp5)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"pnpm 12.1","url":"https://daily.dev/posts/pnpm-12-1-t8eddazp5","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/pnpm-12-1-t8eddazp5"},"datePublished":"2026-08-31T20:43:06.449Z","dateModified":"2026-08-31T21:22:52.145Z","description":"pnpm 12.1 introduces a new workspace task scheduler (ported to the Rust CLI) that dispatches projects as soon as dependencies finish rather than waiting for...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/63763758f3e74381d631e88f7667e808?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/63763758f3e74381d631e88f7667e808?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Fast, disk space efficient package manager | pnpm","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Fast, disk space efficient package manager | pnpm","logo":"https://media.daily.dev/image/upload/s--JKuzGOiX--/f_auto,q_auto/v1787487440/logos/pnpm-blog?_a=BAMAMicg0","url":"https://daily.dev/sources/pnpm-blog"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/pnpm-12-1-t8eddazp5","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":5},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"general-programming,nodejs,pnpm","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Fast, disk space efficient package manager | pnpm","item":"https://daily.dev/sources/pnpm-blog"},{"@type":"ListItem","position":3,"name":"pnpm 12.1"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/pnpm-12-1-t8eddazp5#faq","mainEntity":[{"@type":"Question","name":"How does the pnpm 12.1 workspace task scheduler decide when to start a project's script?","acceptedAnswer":{"@type":"Answer","text":"pnpm -r run and pnpm -r exec now dispatch a project as soon as its dependencies finish, instead of waiting for an entire topological group to complete. Recursive scripts can declare cross-task relationships and per-task concurrency under a tasks field, and the scheduler detects cycles, supports --dry-run --json graph output, and cancels in-flight work under the default --bail flag. Teams tuning monorepo build speed can track scheduler changes like this one on daily.dev."}},{"@type":"Question","name":"Where does pnpm 12.1 store login credentials instead of auth.ini?","acceptedAnswer":{"@type":"Answer","text":"pnpm login and pnpm adduser now write the granted token into the global config.yaml under the _auth field rather than auth.ini. When used with --scope, the scope is also added to that registry's global registries declaration, tying the credential to its route; pnpm logout removes entries from config.yaml but still cleans up any leftover auth.ini from older pnpm versions. Anyone maintaining CI authentication configs can follow credential storage changes like this on daily.dev."}},{"@type":"Question","name":"Which platforms does pnpm's shared build artifact cache support as of pnpm 12.1?","acceptedAnswer":{"@type":"Answer","text":"Remote build artifacts now support Linux/glibc, macOS, and Windows on both x64 and arm64, an expansion from the prior Linux-only support. The underlying protocol changed to use discriminated subjects so dependency side effects and workspace task artifacts cannot collide, meaning pnpm clients and pnpr servers must run matching versions after this update. Developers rolling out shared caches across mixed-OS teams can watch protocol changes like this via daily.dev."}}]}
```

