惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
人人都是产品经理
人人都是产品经理
月光博客
月光博客
V
V2EX
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
宝玉的分享
宝玉的分享
雷峰网
雷峰网
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
博客园 - 聂微东
博客园 - 司徒正美
博客园 - 【当耐特】
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - sailingsam/Pitara: Back up your dev environment ...
sailingsam · 2026-06-14 · via Hacker News: Show HN

GitHub backs up your code. Pitara backs up your development environment.

Set up a new laptop in minutes instead of a lost day. Pitara captures the language runtimes and global CLI tools on one machine and reinstalls them on another. It captures Node, Go, Java, and Bun, plus npm, pnpm, and bun global packages.

🔒 You own it. We never see it.

  • No server, no database — backups live in your own GitHub repo
  • No secrets stored — snapshots hold only tool names and versions
  • Your token never leaves your machine (~/.pitara)
  • Open source — audit every line yourself
pitara login     # one-time: sign in with GitHub
pitara backup    # save this machine
pitara restore   # rebuild it on a new machine

That's the whole flow. Your backups land in a private pitara-snapshots repo Pitara creates in your account.


Why

Switching laptops or reinstalling an OS means rebuilding a setup scattered across runtimes, package managers, and global CLIs. Existing tools each cover a slice — dotfiles for config, Settings Sync for editors, Brewfiles for Homebrew, Nix for full reproducibility (with a steep learning curve). Pitara takes the simple middle: back up your installation state and restore it with one command.


Install

npm (works with npm, pnpm, and bun — all use the npm registry):

From source (requires Go 1.23+):

go install github.com/sailingsam/pitara/cmd/pitara@latest

Prebuilt binaries for macOS, Linux, and Windows are attached to every release.


Usage

Back up and restore

pitara login            # one-time: sign in with GitHub
pitara backup           # save this machine
pitara restore          # rebuild this setup on a new machine
pitara snapshots list   # see your saved machines

Backing up more than one machine? Add --label <name> to backup and restore (e.g. --label work-laptop). With a single machine you never need it.

Inspect a snapshot, or work offline

pitara scan prints the snapshot Pitara would create — handy to see exactly what gets captured, or to save it as a file and move it yourself without an account:

pitara scan                          # print the snapshot (JSON) to the screen
pitara scan -o snapshot.json         # save it to a file instead
pitara restore --from snapshot.json  # restore from that file (add --dry-run to preview)

The restore report

Restore installs in dependency order (Node before npm globals, and so on), skips anything whose prerequisite failed, and prints a summary:

Pitara Restore Report
───────────────────────
Snapshot:  work-laptop (linux, amd64)
Created:   2026-06-10 14:00 UTC

Runtimes
  ✓ Node.js 22.15.0

Global Packages (npm)
  ✓ npm: typescript@5.4.5
  ✓ npm: tsx@4.7.0

Restore completed.

Snapshot format

A snapshot is a small, versioned JSON document. Each package manager's globals are kept in separate lists — Pitara never guesses which manager installed a tool, and on restore reinstalls each via its original manager.

{
  "schemaVersion": 1,
  "createdAt": "2026-06-10T14:00:00Z",
  "machine": { "label": "work-laptop", "os": "linux", "arch": "amd64" },
  "languages": {
    "node": { "version": "22.15.0", "manager": "nvm" }
  },
  "packages": {
    "npm": {
      "globals": [
        { "name": "typescript", "version": "5.4.5" },
        { "name": "tsx", "version": "4.7.0" }
      ]
    }
  }
}

How storage works

Your snapshots live in a private pitara-snapshots repo in your own GitHub account (created on first backup). The CLI talks directly to the GitHub API — there is no Pitara server and no database — and your token stays on your machine (~/.pitara, 0600). Every backup is a commit, so your history is just the git log.

Login uses GitHub's device flow (like the gh CLI) and requests the repo scope, which is needed to create the private repo and commit snapshots. Because Pitara is open source and runs no server, you can audit exactly what it does — and revoke access anytime at github.com/settings/applications.


Architecture

Pitara is built around a small plugin abstraction. Each tool category implements one interface for both directions:

type Plugin interface {
    Name() string
    Scan(ctx context.Context) (ScanResult, error)
    Restore(ctx context.Context, data json.RawMessage, opts RestoreOptions) (RestoreResult, error)
    Dependencies() []string   // plugins that must restore first
    SupportedOS() []OS        // platforms this plugin can restore on
}

Adding a new tool is: implement Plugin, register it. The registry topologically sorts plugins by Dependencies() so prerequisites install first.

cmd/pitara/          CLI entrypoint
internal/
  cli/               Cobra commands (scan, restore, login, backup, ...)
  discovery/         Scan orchestrator
  restore/           Restore planner + executor
  snapshot/          Schema, validation, builder
  report/            Restore report formatter
  plugins/           Plugin interface + registry (node, go, java, bun, npm, ...)
  auth/              Local session storage (~/.pitara)
  github/            GitHub device-login + REST client
  executil/          Command helpers

The CLI depends only on Cobra; the GitHub client is pure standard library, so the installed binary stays small.


Roadmap

Phase Scope Status
1 CLI foundation: scan, local restore, Node + npm plugins
2 Go, Java, Bun runtimes; pnpm + bun globals; per-OS install paths
3 Cloud: GitHub-backed login, backup, snapshots list, restore
4 Cross-OS warnings, version-manager detection, retry/recovery

Contributing

Contributions are welcome. Good first additions are new plugins — pick a tool, implement the Plugin interface, and register it. Please run go build ./... and go test ./... before opening a PR.


License

MIT © sailingsam