npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@oliverne/myboxctl

v0.4.2

Published

Agent-friendly CLI for NAVER MYBOX file operations

Readme

myboxctl

한국어

myboxctl is a small, predictable CLI for managing files through the NAVER MYBOX Open API. It is built for AI-agent subprocesses and remains readable for direct terminal use. It is not a sync tool, SDK, MCP server, or complete API wrapper.

I built it for my own Hermes Agent and Codex CLI workflows. This is an independent project and is not affiliated with NAVER.

Commands

| Command | Purpose | | ------------- | ---------------------------------------------------- | | list / ls | List a folder or show one resource | | info | Show file or folder metadata | | mkdir | Create a remote folder; supports -p | | upload | Upload a file or an explicit recursive folder tree | | download | Download a file or an explicit recursive folder tree | | delete | Move a remote file or folder to the MYBOX trash | | rename | Rename a file or folder in place | | move | Move a file or folder into an existing folder |

Install

Requires Node.js 20 or later.

npm install -g @oliverne/myboxctl
myboxctl --version

Set a MYBOX PAT through MYBOX_PAT, or store one token line in ~/.config/myboxctl/credentials with file mode 600. Never pass a PAT as a CLI argument or put it in source code, logs, or Git.

Quick start

Remote paths are absolute POSIX paths beginning with /.

myboxctl list /agents
myboxctl info /agents/report.md
myboxctl mkdir -p /agents/output
myboxctl upload ./report.md /agents/output/ --mkdir
myboxctl download /agents/output/report.md ./report.md
myboxctl upload ./reports /agents/ --recursive --mkdir
myboxctl download /agents/reports ./reports-copy --recursive
myboxctl delete /agents/output/report.md
myboxctl rename /agents/output/draft.md final.md
myboxctl move /agents/output/final.md /agents/archive/

Paths containing spaces must be quoted so that the shell passes each path as one argument. The quotes are shell syntax and are not part of the local or remote file name.

PowerShell accepts single or double quotes:

myboxctl download '/Team Files/big report.zip' '.\Local Files\big report.zip'

Use double quotes in Command Prompt (cmd.exe):

myboxctl download "/Team Files/big report.zip" ".\Local Files\big report.zip"

Important behavior:

  • upload compares size and modification time, not content hashes. It skips matching files and rejects a clearly newer remote file; use --force only for an intentional overwrite.
  • download preserves an existing local file unless --overwrite is explicit.
  • Folder transfer requires --recursive, never merges an existing destination tree, and rejects symlinks and names that are not portable across macOS, Linux, and Windows. It excludes macOS AppleDouble metadata files whose names start with ._.
  • delete moves resources to the MYBOX trash. Root, encrypted folders, and shared-with-me folders are unsupported.
  • rename and move keep the resource ID, call exactly one mutation endpoint, and fail before mutating when the new name collides with another resource in the destination. move requires an existing destination folder, rejects a folder moving into itself or its descendant, and never renames.
  • New remote resources are created with NFC names. Existing lookups use the given spelling, and ambiguous Unicode-equivalent candidates fail safely. rename sends the requested name as-is.

Automation

Use --json and check the exit code first. Stdout contains one schemaVersion: 1 JSON result. With --verbose, safe progress events are written as JSON Lines to stderr. PATs and signed transfer URLs are redacted.

myboxctl upload ./report.md /agents/output/ --mkdir --json

Set MYBOX_PLAN to 30GB, 80GB, 180GB, 330GB, 2TB, 5TB, 10TB, or 20TB to apply the documented plan-specific local limits and download daily-limit advisory. A {"plan":"180GB"} value in ~/.config/myboxctl/config.json is used when the environment variable is absent. The plan is declared by the user; it cannot be detected safely from storage capacity.

For an opt-in support log, add --diagnostic-log <new-file>. The file is created exclusively and contains JSONL events and the final result, but it may contain local paths and a redacted stack; review it before sharing. Existing files are never overwritten.

| Exit | Meaning | | ---: | ------------------------------ | | 0 | Success | | 2–5 | Input, auth, missing, conflict | | 6–8 | API, local I/O, rate limit | | 70 | Unexpected internal error |

See the versioned CLI contract for exact JSON fields, actions, options, and exit-code semantics.

Agent Skill

The repository includes a reusable Agent Skill with CLI installation, command examples, and the essential safety rules. Copy the entire skill directory to your agent's skill location; for Hermes user skills, use ~/.hermes/skills/myboxctl/.

Development

Source development requires Bun 1.4 or later.

bun install --frozen-lockfile
bun run check
bun run build

Live MYBOX tests are opt-in and mutate only an isolated test prefix.

MYBOX_PAT=<YOUR_PAT> bun run test:integration

Documentation

License

MIT