{"_id":"@bun-ga/opendom","_rev":"4-080f927a90fb8fc080e1f1af990762c1","name":"@bun-ga/opendom","dist-tags":{"latest":"0.2.3"},"versions":{"0.2.0":{"name":"@bun-ga/opendom","version":"0.2.0","keywords":["cli","cloudflare","dns","domains","namecheap","netim","porkbun"],"license":"AGPL-3.0-only","_id":"@bun-ga/opendom@0.2.0","maintainers":[{"name":"bun-ga","email":"dev@bun.ga"}],"homepage":"https://github.com/bun-ga/opendom/tree/main/apps/opendom-cli","bugs":{"url":"https://github.com/bun-ga/opendom/issues"},"bin":{"opendom":"dist/index.js"},"dist":{"shasum":"3c1548ccd118dc1904f742da4bd646867c9a65b7","tarball":"https://registry.npmjs.org/@bun-ga/opendom/-/opendom-0.2.0.tgz","fileCount":42,"integrity":"sha512-EmnEB8jo7v0/eMu8c/GQgzUH3hU60vdlLkQL0ar7s3R9FZkeIS4SqVERFR0PyVV0V3ehWmCoDz8PCzyXdcpVoA==","signatures":[{"sig":"MEUCIBPuAEw90Z+fMwLW1JnZIs/sca8lGp59375OjFm9OjYGAiEA/yMwDpN2XMhUBtRVsZwY8Hts7qB64XGXOneBErQXrjA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279420},"type":"module","gitHead":"358d45b7c039fa5122d33372a197a1e8a8165825","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"bun test","build":"tsc -p tsconfig.json","clean":"rm -rf dist","start":"node dist/index.js","prepack":"bunx turbo run build --filter=@bun-ga/opendom","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"bun-ga","email":"dev@bun.ga"},"repository":{"url":"git+https://github.com/bun-ga/opendom.git","type":"git","directory":"apps/opendom-cli"},"_npmVersion":"11.8.0","description":"CLI domain management tool. No upsells, no popups, just domains.","directories":{},"_nodeVersion":"24.13.1","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^22.19.11","@biomejs/biome":"^1.9.4","@opendom/tsconfig":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/opendom_0.2.0_1773183842026_0.9459692671523785","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@bun-ga/opendom","version":"0.2.1","keywords":["cli","cloudflare","dns","domains","namecheap","netim","porkbun"],"license":"AGPL-3.0-only","_id":"@bun-ga/opendom@0.2.1","maintainers":[{"name":"bun-ga","email":"dev@bun.ga"}],"homepage":"https://github.com/bun-ga/opendom/tree/main/apps/opendom-cli","bugs":{"url":"https://github.com/bun-ga/opendom/issues"},"bin":{"opendom":"dist/index.js"},"dist":{"shasum":"f3384c0e34f8ca3ca912344db1e76ef52dea6e53","tarball":"https://registry.npmjs.org/@bun-ga/opendom/-/opendom-0.2.1.tgz","fileCount":42,"integrity":"sha512-Q+l5WEEg0R0aFTCC00qmEZK/YaJDC6PcrJL3QNNAxi98hWSH1h4iiJecGuu8JrzVOTDMb7ruF4xI0KkBM1Hhng==","signatures":[{"sig":"MEUCIBKDL4cSlH7cson3vIkvlcc61TnaT17Rv211t6Kf69fBAiEA4Q6gPM/XrXA/SmoWKMUaAShtq/aL+OaxYdznH+DO1to=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279420},"type":"module","gitHead":"358d45b7c039fa5122d33372a197a1e8a8165825","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"bun test","build":"tsc -p tsconfig.json","clean":"rm -rf dist","start":"node dist/index.js","prepack":"bunx turbo run build --filter=@bun-ga/opendom","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"bun-ga","email":"dev@bun.ga"},"repository":{"url":"git+https://github.com/bun-ga/opendom.git","type":"git","directory":"apps/opendom-cli"},"_npmVersion":"11.8.0","description":"CLI domain management tool. No upsells, no popups, just domains.","directories":{},"_nodeVersion":"24.13.1","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^22.19.11","@biomejs/biome":"^1.9.4","@opendom/tsconfig":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/opendom_0.2.1_1773184164073_0.5716338191272416","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@bun-ga/opendom","version":"0.2.2","keywords":["cli","cloudflare","dns","domains","namecheap","netim","porkbun"],"license":"AGPL-3.0-only","_id":"@bun-ga/opendom@0.2.2","maintainers":[{"name":"bun-ga","email":"dev@bun.ga"}],"homepage":"https://opendom.bun.ga/","bugs":{"url":"https://github.com/bun-ga/opendom/issues"},"bin":{"opendom":"dist/index.js"},"dist":{"shasum":"971a642920057c02c4b21673899c62b3568e86df","tarball":"https://registry.npmjs.org/@bun-ga/opendom/-/opendom-0.2.2.tgz","fileCount":42,"integrity":"sha512-XUzFojLqcYywMhRTSQ98ptQA+AsEYH9NFxmsiNhM6tHZMyeZBU5mEJX91yZGPjJdtvVOA8BH7q2A0AFYCYpDDg==","signatures":[{"sig":"MEQCIHWya/hOCjGcK/epU9DUR2hS0EtnlrSgI7w3Um21voxNAiBaK54NQ7VM4Q9ZZQYYwDouJpB52QzsPE17HRrE9xRWvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":284711},"type":"module","gitHead":"5d2daf99bfe4dde89e52230b287263f340f24d5d","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"bun test","build":"tsc -p tsconfig.json","clean":"rm -rf dist","start":"node dist/index.js","prepack":"bunx turbo run build --filter=@bun-ga/opendom","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"bun-ga","email":"dev@bun.ga"},"repository":{"url":"git+https://github.com/bun-ga/opendom.git","type":"git","directory":"apps/opendom-cli"},"_npmVersion":"11.8.0","description":"Multi-provider domain management from your terminal. No upsells, no popups.","directories":{},"_nodeVersion":"24.13.1","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","typescript":"^5.9.3","@types/node":"^22.19.11","@biomejs/biome":"^1.9.4","@opendom/tsconfig":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/opendom_0.2.2_1773184649143_0.9774117693999846","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@bun-ga/opendom","version":"0.2.3","description":"Multi-provider domain management from your terminal. No upsells, no popups.","license":"AGPL-3.0-only","type":"module","repository":{"type":"git","url":"git+https://github.com/bun-ga/opendom.git","directory":"apps/opendom-cli"},"bugs":{"url":"https://github.com/bun-ga/opendom/issues"},"homepage":"https://opendom.bun.ga/","keywords":["cli","cloudflare","dns","domains","namecheap","netim","porkbun"],"bin":{"opendom":"dist/index.js"},"scripts":{"dev":"tsx src/index.ts","build":"tsc -p tsconfig.json","start":"node dist/index.js","typecheck":"tsc -p tsconfig.json --noEmit","lint":"biome check .","test":"bun test","clean":"rm -rf dist","prepack":"cp ../../LICENSE ./LICENSE && bunx turbo run build --filter=@bun-ga/opendom","postpack":"rm -f ./LICENSE"},"publishConfig":{"access":"public"},"dependencies":{},"devDependencies":{"@biomejs/biome":"^1.9.4","@opendom/tsconfig":"workspace:*","@types/node":"^22.19.11","tsx":"^4.21.0","typescript":"^5.9.3"},"gitHead":"640c8fd649c72e7bd411f3888156f49481224fbf","_id":"@bun-ga/opendom@0.2.3","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-kZrHV8To8k6heWFL/gNU+0YuXxWS5/BA/AMRSKVhJEE1nzj+zOiA298mTWkfkFOHEWdkidL+sX+YmR5qEC3rOA==","shasum":"a0722e5a3c05198b78cf371e39dd95e650dbe756","tarball":"https://registry.npmjs.org/@bun-ga/opendom/-/opendom-0.2.3.tgz","fileCount":43,"unpackedSize":319523,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDgUy9ihek0lojtX9NF0/sx7JN5Cf1h5utIQ1CTZHwiYQIgK9gDOSlookDRy5tzIl4xza7bKZfqRVSGeiZ1nsowySg="}]},"_npmUser":{"name":"bun-ga","email":"dev@bun.ga"},"directories":{},"maintainers":[{"name":"bun-ga","email":"dev@bun.ga"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/opendom_0.2.3_1773257826293_0.21159146355675174"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-10T23:04:01.909Z","modified":"2026-03-11T19:37:06.576Z","0.2.0":"2026-03-10T23:04:02.207Z","0.2.1":"2026-03-10T23:09:24.221Z","0.2.2":"2026-03-10T23:17:29.274Z","0.2.3":"2026-03-11T19:37:06.462Z"},"bugs":{"url":"https://github.com/bun-ga/opendom/issues"},"license":"AGPL-3.0-only","homepage":"https://opendom.bun.ga/","keywords":["cli","cloudflare","dns","domains","namecheap","netim","porkbun"],"repository":{"type":"git","url":"git+https://github.com/bun-ga/opendom.git","directory":"apps/opendom-cli"},"description":"Multi-provider domain management from your terminal. No upsells, no popups.","maintainers":[{"name":"bun-ga","email":"dev@bun.ga"}],"readme":"# @bun-ga/opendom\n\n> Multi-provider domain management from your terminal.  \n> No upsells, no popups, no cookie banners.\n\n```bash\nopendom search startup --tlds com,io,dev\nopendom buy startup.com --yes\nopendom dns set startup.com A 1.2.3.4\n```\n\n`opendom` is a CLI for searching, buying, renewing, and managing domains across multiple registrars with one command surface.\n\n## Install\n\n```bash\nnpm install -g @bun-ga/opendom\nopendom --help\n```\n\n## Quick Start\n\n```bash\n# Netim login (OT&E)\nopendom login --provider netim --id YOUR_RESELLER_ID --secret YOUR_API_SECRET --ote\n\n# Provider-scoped command examples\nopendom domains --provider netim\nopendom search myproject --tlds com,io --provider porkbun\nopendom dns list example.com --provider cloudflare\n```\n\n## Supported Providers\n\n- Netim\n- Cloudflare\n- Porkbun\n- Namecheap\n\nCapability matrix and provider caveats:\n- https://opendom.bun.ga/getting-started\n- https://opendom.bun.ga/authentication\n- https://opendom.bun.ga/first-commands\n- https://opendom.bun.ga/providers-matrix\n- https://opendom.bun.ga/reference\n\n## CLI\n\n### Global Flags\n\n- `--provider <netim|cloudflare|porkbun|namecheap>`\n- `--help`, `-h`\n- `--version`, `-v`\n\nProvider flag will be mandatory in `v0.3.0`. In `v0.2.x`, missing provider falls back to Netim with warning.\n\n### Auth Commands\n\n```bash\nopendom login --provider netim --id <ID> --secret <SECRET> [--ote]\nopendom login --provider cloudflare --token <TOKEN> [--account-id <ACCOUNT_ID>]\nopendom login --provider porkbun --apikey <APIKEY> --secretapikey <SECRETAPIKEY>\nopendom login --provider namecheap --api-user <API_USER> --username <USERNAME> --api-key <API_KEY> --client-ip <IP> [--sandbox]\n\nopendom logout --provider <provider>\nopendom logout --all\n```\n\n### Domain Commands\n\n```bash\nopendom search <name> [--tlds com,io] [--price] --provider <provider>\nopendom buy <domain> [--duration 1] [--yes] [--owner <CONTACT_ID>] --provider <provider>\nopendom domains --provider <provider>\nopendom info <domain> --provider <provider>\nopendom renew <domain> [--duration 1] [--yes] --provider <provider>\nopendom set <domain> <whois-privacy|auto-renew|lock> <on|off> --provider <provider>\n```\n\n### DNS Commands\n\n```bash\nopendom dns list <domain> --provider <provider>\nopendom dns set <domain> <TYPE> <VALUE> [--subdomain <sub>] [--ttl <sec>] [--priority <n>] --provider <provider>\nopendom dns rm <domain> <TYPE> <VALUE> [--subdomain <sub>] --provider <provider>\nopendom dns update <domain> <TYPE> <OLD> <NEW> [--subdomain <sub>] [--ttl <sec>] --provider <provider>\nopendom dns ns <domain> <ns1> <ns2> [ns3...] --provider <provider>\n```\n\n## Command Compatibility\n\nLegend:\n- `OK` = supported\n- `PARTIAL` = supported with scope or feature limits\n- `FAIL-FAST` = intentionally blocked with a guidance message\n\n| Command | Netim | Cloudflare | Porkbun | Namecheap | Notes |\n|:--|:--|:--|:--|:--|:--|\n| `login` / `logout` | OK | OK | OK | OK | Provider-specific auth flags required. |\n| `balance` | OK | PARTIAL | PARTIAL | PARTIAL | Cloudflare/Porkbun may not expose real account balance values. |\n| `search` | OK | PARTIAL | OK | OK | Cloudflare needs registrar/account scope. |\n| `buy` | OK | FAIL-FAST | OK | OK | Cloudflare buy is dashboard-only. Namecheap needs contact profile in config. |\n| `domains` | OK | OK | OK | OK | Cloudflare may use registrar list or zone fallback depending on token scope. |\n| `info` | OK | OK | OK | OK | Cloudflare merges registrar and zone data when possible. |\n| `renew` | OK | FAIL-FAST | FAIL-FAST | OK | Cloudflare/Porkbun renew not exposed in this CLI flow. |\n| `set whois-privacy` | OK | OK | FAIL-FAST | OK | Porkbun directs to dashboard. |\n| `set auto-renew` | OK | OK | OK | FAIL-FAST | Namecheap auto-renew toggle not exposed in this CLI flow. |\n| `set lock` | OK | OK | FAIL-FAST | OK | Porkbun lock toggle not exposed in this CLI flow. |\n| `dns list` | OK | OK | OK | OK | Namecheap DNS uses `setHosts` merge-write model. |\n| `dns set` | OK | OK | OK | OK | Porkbun requires per-domain API Access enabled. |\n| `dns rm` | OK | OK | OK | OK | Record must match exactly (`type`, `subdomain`, `value`). |\n| `dns update` | OK | OK | OK | OK | Updates are provider-specific under the hood, CLI contract is common. |\n| `dns ns` | OK | FAIL-FAST | OK | OK | Cloudflare authoritative NS cannot be changed in this CLI flow. |\n\n## Provider Notes\n\n- Cloudflare: `buy/renew` are fail-fast; `search` and `set` require registrar scope and usually account-level access.\n- Netim: `buy` auto-resolves Owner/Admin/Tech/Billing from account defaults when not provided; use `--owner` to override.\n- Porkbun: domain-level API Access must be enabled in the dashboard.\n- Porkbun: `set` currently supports `auto-renew` only; `renew` is fail-fast in CLI.\n- Namecheap: production default; API requires whitelisted `ClientIp` and may need account eligibility.\n\n## Config And Migration\n\n`opendom` stores config under:\n\n```text\n~/.config/opendom/config.json\n```\n\nConfig format moved to v2 (`schemaVersion: 2`) with provider-specific credential blocks:\n\n```json\n{\n  \"schemaVersion\": 2,\n  \"defaults\": { \"provider\": \"netim\" },\n  \"providers\": {\n    \"netim\": {\n      \"env\": \"ote\",\n      \"credentials\": {\n        \"resellerId\": \"...\",\n        \"apiSecret\": \"...\"\n      }\n    }\n  }\n}\n```\n\nLegacy Netim configs are auto-migrated and backed up as:\n\n```text\n~/.config/opendom/config.json.bak-v1\n```\n\n## Repository And Docs\n\n- Documentation: https://opendom.bun.ga/\n- Repository: https://github.com/bun-ga/opendom\n- Issues: https://github.com/bun-ga/opendom/issues\n- Package source: https://github.com/bun-ga/opendom/tree/main/apps/opendom-cli\n\n## License\n\nAGPL-3.0-only\n","readmeFilename":"README.md"}