Why linkd Supported Ecosystems TUI Monitor Features Docs Hub 📖 Full Official Documentation →
⚡ linkd v0.2.2 ReleasedMulti-Ecosystem Ready

The Local-Dev Link Daemon
for Modern Monorepos.

Continuous reconciliation that keeps your in-development packages synced into node_modules, vendor, or site-packages across reinstalls — with zero manifest edits.

curl -fsSL https://raw.githubusercontent.com/pinoox/linkd/master/install.sh | bash
linkd terminal — bash
$ linkd link ./packages/ui-kit ./apps/web-app
ℹ Detecting ecosystem... [npm / pnpm detected]
ℹ Resolving target: ./apps/web-app/node_modules/@acme/ui-kit
✓ Created isolated project shadow (safeguarding pnpm global store)
✓ Link registered & synced (@acme/ui-kit → node_modules/@acme/ui-kit)
⚡ Started linkd background daemon (PID: 41829, socket: ~/.linkd/linkd.sock)

$ cd ./apps/web-app && pnpm install
Packages: +482
Progress: resolved 482, reused 482, downloaded 0, added 482, done
⚡ linkd reconciler: Reinstall marker change detected (pnpm-lock.yaml)
✓ Dev link atomically restored in 8ms without touching package.json!

Say goodbye to broken dev links.

Traditional symlinks break the moment dependencies are installed. linkd introduces Kubernetes-style background reconciliation to local development.

❌ Traditional Linking (npm link / pip -e / file:)
  • 🚫 Wiped by reinstalls: Running npm install, composer update, or uv sync wipes your links without warning.
  • 🚫 Global cache risk: Tools like pnpm can accidentally mutate your global machine-wide store.
  • 🚫 Dirty git diffs: "file:../lib" dependencies accidentally get committed to production branches.
  • 🚫 Manual toil: Developers spend hours re-linking packages every day across monorepo workspaces.
✅ With linkd Reconciler
  • Survives all reinstalls: Background daemon monitors lockfiles and instantly restores your dev files.
  • 100% Store safety: Project-local shadow copies ensure global caches remain completely pristine.
  • Zero manifest edits: Manifests remain untouched. Zero accidental git commits.
  • Multi-ecosystem: Seamless workflow for JS, PHP, Python, Go, Rust, Java, and custom paths.

One tool for all your polyglot projects.

Natively detects manifests, virtual environments, and package managers across 11 distinct ecosystems.

🟢 JavaScript & TypeScript

Deep integration with npm, pnpm, yarn, and bun. Automatically detects monorepo package roots, links into node_modules, and creates isolated project-local shadow directories for pnpm to prevent global store corruption.

  • Automatic package.json name & main entry resolution
  • pnpm shadow isolation: never writes to ~/.pnpm-store
  • Watches package-lock.json, pnpm-lock.yaml, yarn.lock, and bun.lockb
  • Zero manifest edits: git status remains completely clean
# 1. Link your UI kit into your web app
linkd link ./packages/ui-kit ./apps/web-app

# Reconciler automatically links:
# ./packages/ui-kit → ./apps/web-app/node_modules/@acme/ui-kit

# Run installs without breaking links!
cd ./apps/web-app && pnpm install

Live Terminal Monitor Dashboard

Run linkd monitor or linkd top to inspect active links, stream live IPC sync logs, force re-syncs, and toggle pause/resume in real-time.

⚡ linkd monitorConnected to daemon (PID: 41829)
● IPC Streaming: Active
ACTIVE LINKS (Click to inspect)
[00:30:12] Subscribed to daemon broadcast stream
[00:30:13] ✓ Link '@acme/ui-kit' synced (42 files, copy)
[00:30:14] ✓ Link 'acme/logger' synced (14 files, copy)
[00:30:15] ℹ Watching lockfiles for reinstall events

Built with Rust for speed & resilience.

Designed with rock-solid safety guarantees for mission-critical developer environments.

🛡️

Global Store Safeguard

Strict safety gates block any sync operations from writing into global caches like ~/.pnpm-store, redirecting to local shadow copies.

Atomic Directory Swaps

Sync operations write to temporary staging roots and swap atomically via filesystem renames, eliminating transient build failures.

🔁

Watch-Loop Prevention

Hierarchical path validation guards against circular watching when syncing nested, monorepo, or parent/child directory trees.

🏷️

Marker Provenance

Every synced folder is sealed with a .linkd-marker.json manifest ensuring linkd never overwrites or deletes untracked developer files.

🖥️

Cross-Platform IPC

Seamless Unix Domain Sockets on Linux/macOS and Named Pipes on Windows provide high-performance, non-blocking daemon communication.

📦

Global Package Store

Register packages once with linkd register and attach them to any number of consumer projects with linkd use <pkg>.

Comprehensive Guides & Reference

Everything you need to master local-dev package reconciliation across every language stack.

Ready to dive deeper?

Read our comprehensive documentation covering all architecture decisions, troubleshooting, and polyglot guides.

Open Documentation (v0.2.2) →