The CLI tool for managing Inkdrop plugins and themes.
npm install -g @inkdropapp/ipm-cliBefore using the CLI, you need to configure authentication with your Inkdrop account:
ipm configureThis will:
- Open the Inkdrop desktop app to display your access key
- Prompt you to paste the access key in the terminal
- Securely store the credentials in your system keyring
ipm list
# or
ipm lsShows all packages currently installed in your Inkdrop.
ipm outdatedLists packages that have newer versions available.
# Install latest version
ipm install <package-name>
# or
ipm i <package-name>
# Install specific version (package@version format)
ipm install <package-name>@1.2.3
ipm i <package-name>@1.2.3
# Install specific version (--version flag)
ipm install <package-name> --version 1.2.3
# or
ipm i <package-name> -v 1.2.3# Update to latest version
ipm update <package-name>
# Update to specific version (package@version format)
ipm update <package-name>@1.2.3
# Update to specific version (--version flag)
ipm update <package-name> --version 1.2.3
# or
ipm update <package-name> -v 1.2.3ipm uninstall <package-name>
# or
ipm remove <package-name># Basic search
ipm search <query>
# Search with sorting
ipm search <query> --sort recency
ipm search <query> -s score -d descAvailable sort options:
score- Relevance score (default)majority- Most popularrecency- Recently updatednewness- Recently published
ipm show <package-name>Displays detailed information about a package including:
- Latest version
- Description
- Repository URL
- Download count
- Supported Inkdrop version
# Publish from current directory
ipm publish
# Publish from specific directory
ipm publish ./path/to/package
# Dry-run (simulate publishing without actually doing it)
ipm publish --dry-run
ipm publish ./path/to/package --dry-runIt is recommended to use npm version to bump the package version before publishing. For example:
# Bump up the patch version
npm version patch
ipm publish# Unpublish entire package
ipm unpublish <package-name>
# Unpublish specific version (package@version format)
ipm unpublish <package-name>@1.2.3
# Unpublish specific version (--version flag)
ipm unpublish <package-name> --version 1.2.3
# or
ipm unpublish <package-name> -v 1.2.3Warning: This command will prompt for confirmation before unpublishing. Unpublishing a package or version is a destructive action and cannot be undone.
Reconfigure authentication (e.g., to use a different account):
ipm configureYou can customize the behavior of the CLI using the following environment variables:
INKDROP_ACCESS_KEY_ID- Your Inkdrop access key ID (overrides stored credentials)INKDROP_SECRET_ACCESS_KEY- Your Inkdrop secret access key (overrides stored credentials)
INKDROP_HOME- Path to Inkdrop's home directory (default:~/Library/Application Support/inkdropon macOS,~/.config/inkdropon Linux,%APPDATA%/inkdropon Windows)
INKDROP_API_URL- Inkdrop API base URL (default:https://api.inkdrop.app)INKDROP_PACKAGES_URL- Packages registry URL (default:${INKDROP_API_URL}/packages)
INKDROP_VERSION- Inkdrop version to use for compatibility checks (default:6.0.0)
# Use custom API URL for testing
INKDROP_API_URL=http://localhost:3000 ipm search markdown
# Use custom Inkdrop home directory
INKDROP_HOME=/custom/path ipm list
# Override stored credentials temporarily
INKDROP_ACCESS_KEY_ID=your-key-id \
INKDROP_SECRET_ACCESS_KEY=your-secret-key \
ipm install my-plugin- Node.js 24.x or higher
- npm
git clone https://github.com/inkdropapp/ipm-cli.git
cd ipm-cli
npm installnpm run buildWatch for changes and rebuild automatically:
npm run dev# Run linter
npm run lint
# Fix linting issues
npm run lint:fix
# Format code
npm run format
# Type checking
npm run typecheckdotenv run ./bin/cli.js <command> [options]The CLI uses the following technologies:
- @inkdropapp/ipm - Core package manager functionality
- @napi-rs/keyring - Secure credential storage in system keyring
- Commander.js - CLI framework
- Chalk - Terminal string styling
Authentication credentials are stored securely in your system's keyring:
- macOS: Keychain
- Linux: libsecret
- Windows: Credential Vault
MIT
Takuya Matsuyama (@craftzdog)