{"_id":"@0xhoneyjar/freeside-cli","name":"@0xhoneyjar/freeside-cli","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"name":"@0xhoneyjar/freeside-cli","version":"0.2.0","description":"Freeside operations CLI for agents and humans.","type":"module","license":"MIT","bin":{"freeside":"dist/bin/freeside.js"},"scripts":{"dev":"bun run src/bin/freeside.ts","build":"tsup","prepublishOnly":"bun test && bun run build","typecheck":"tsc --noEmit","test":"bun test"},"dependencies":{"incur":"0.4.5","yaml":"^2.9.0"},"devDependencies":{"@types/bun":"^1.3.14","tsup":"^8.5.1","typescript":"^5.6.0"},"engines":{"node":">=20.0.0"},"publishConfig":{"access":"public"},"keywords":["freeside","cli","hexagonal","0xhoneyjar","agent-cli","incur"],"repository":{"type":"git","url":"git+https://github.com/0xHoneyJar/freeside-cli.git"},"homepage":"https://github.com/0xHoneyJar/freeside-cli#readme","bugs":{"url":"https://github.com/0xHoneyJar/freeside-cli/issues"},"_id":"@0xhoneyjar/freeside-cli@0.2.0","gitHead":"f9e0471742b2affefa4106fb4a9496978dabd71d","_nodeVersion":"23.3.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-sKDuFqrJ3i2EglsVGlFu27ke1hvJF0AXHAZTK3ES8mykpJvV6UAhda41sgAuScwBIH+x1IXx+O6WegpYLq/XXQ==","shasum":"84c7aeebe6115c1ff8faedd286ca033173617dc0","tarball":"https://registry.npmjs.org/@0xhoneyjar/freeside-cli/-/freeside-cli-0.2.0.tgz","fileCount":9,"unpackedSize":162206,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDO17B410gXFaVmuKkTJaEfFPGotw6Ihx0PXGeY3vIuTAIhAMAtKvpKhD4WebYmUdfG+NwADshQlG/yCoHG6tRrvDmB"}]},"_npmUser":{"name":"zksoju","email":"underrated@gmail.com"},"directories":{},"maintainers":[{"name":"janitooor","email":"jani@0xhoneyjar.xyz"},{"name":"zerkereth","email":"zerkereth@gmail.com"},{"name":"zksoju","email":"underrated@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/freeside-cli_0.2.0_1778719138144_0.09058781206416389"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-14T00:38:58.066Z","0.2.0":"2026-05-14T00:38:58.281Z","modified":"2026-05-14T00:38:58.537Z"},"maintainers":[{"name":"janitooor","email":"jani@0xhoneyjar.xyz"},{"name":"zerkereth","email":"zerkereth@gmail.com"},{"name":"zksoju","email":"underrated@gmail.com"}],"description":"Freeside operations CLI for agents and humans.","homepage":"https://github.com/0xHoneyJar/freeside-cli#readme","keywords":["freeside","cli","hexagonal","0xhoneyjar","agent-cli","incur"],"repository":{"type":"git","url":"git+https://github.com/0xHoneyJar/freeside-cli.git"},"bugs":{"url":"https://github.com/0xHoneyJar/freeside-cli/issues"},"license":"MIT","readme":"# @0xhoneyjar/freeside-cli\n\n> Freeside operations CLI for agents and humans.\n\n```sh\nbun add -g @0xhoneyjar/freeside-cli\n# or\nnpm i -g @0xhoneyjar/freeside-cli\n\nfreeside --help\n```\n\n## The doctrine\n\n**Zones = typed-port contracts Freeside exposes as hexagonal seams.** Teams deploying on Freeside pick the zones they need and *honor* the port + schema. Substrate (Vercel, Railway, AWS, Cloudflare) lives in the live adapter, not the zone itself. Sovereign infrastructure is an **option**, not a requirement.\n\nThis CLI is the deterministic substrate. `construct-freeside` is the LLM lens that knows when/why to invoke CLI verbs. Both run in CI, in scripts, in 3am incidents — and from inside an agent session.\n\nBuilt on [`incur`](https://www.npmjs.com/package/incur) — every command is agent-discoverable via `--llms`, `--mcp`, and auto-generated skill files.\n\n## Zones\n\n```sh\nfreeside zones list\n```\n\n| zone | status | home | notes |\n|---|---|---|---|\n| `discord-deploy` | aspirational | NEW repo needed | operator-named priority for next cycle |\n| `quests` | extracted | `freeside-quests` | `@0xhoneyjar/quests-engine` on npm · reverse-extraction test pending |\n| `identity` | active | `freeside-auth` | three-layer spine (credential / identity / session) |\n| `score` | active | `freeside-score` | tiering exemplar · operator-named |\n| `storage` | active | `freeside-storage` | R2-mirroring · variant pipeline |\n| `sonar` | active | `freeside-sonar` | onchain indexer · 6 chains · HyperIndex V3 |\n| `worlds` | draft | `freeside-worlds` | the registry zone itself |\n| `characters` | active | `freeside-characters` | character voice + persona |\n| `mediums` | active | `freeside-mediums` | medium registry + capability routing |\n\n```sh\nfreeside zones show identity         # inspect one zone's port + schema + gaps\nfreeside doctor check                # surface gaps as findings\nfreeside doctor check --probe live   # probe github + npm + http for real drift\n```\n\n## Worlds\n\n```sh\nfreeside worlds list\nfreeside worlds show purupuru\n```\n\nWorlds declare which zones they claim to honor. `worlds show` cross-references the zones manifest and surfaces drift.\n\n## Three-layer identity verbs\n\n```sh\nfreeside credential add <account> --token <jwt> --backend <auto|memory|file|os>\nfreeside credential list\nfreeside credential test <account>\n\nfreeside identity show <user_id>     # scaffold · v0.3 wires spine\nfreeside identity link <credential>\nfreeside identity whoami\n\nfreeside session validate <jwt>      # scaffold · v0.3 wires JWKS verification\nfreeside session verify-jwks <issuer>\n```\n\nPer [`freeside-as-identity-spine`](https://github.com/0xHoneyJar/loa-hivemind) doctrine: **credential** (adapters · wallet/passkey/oauth/otp) · **identity** (canonical THJ user_id + JWT issuance) · **session** (per-world JWT verification via JWKS). Three orthogonal layers · verb expressivity teaches the boundary.\n\nKeychain backends (FR-KEY-5 graceful degradation):\n- **memory** — in-process · TTL · process-singleton\n- **file** — `~/.freeside/credentials.enc` · AES-256-GCM · `FREESIDE_CRED_KEY` env required\n- **os** — stub in v0.2 · v0.3 wires `@0xhoneyjar/freeside-auth-adapters/keychain` once companion publishes\n\n## Outputs\n\nEvery command emits structured envelopes. Default is **TOON** (token-efficient). Override:\n\n```sh\nfreeside zones list --json          # JSON.parse-safe\nfreeside zones list --format yaml\nfreeside zones list --format md     # GitHub-flavored markdown\n```\n\nCTAs guide agents on next commands. Error envelopes include `code`, `retryable`, and `cta.commands` for self-correction.\n\n## Agent discovery\n\n```sh\nfreeside --llms              # markdown skill manifest\nfreeside --llms --format json # JSON schema manifest\nfreeside --mcp               # start as MCP stdio server\nfreeside mcp add             # register CLI as MCP server with Claude Code / Cursor / Amp\nfreeside skills add          # install agent skill files\n```\n\nAll 14 tools expose typed `outputSchema` (including CTAs as structured fields) so agents reading via MCP see typed next-action hints, not just opaque text.\n\n## Configuration\n\nZones + worlds ship in `config/zones.yaml` + `config/worlds.yaml` (operator-editable · Zod-validated at load). Override location via `LOA_FREESIDE_CONFIG_DIR` env. See [`CONTRIBUTING.md`](./CONTRIBUTING.md) for how to add a zone.\n\n## Status\n\n`v0.2.0` — foundation. Read-side verbs functional · three-layer identity scaffold (credential layer wired · identity/session pending v0.3 spine binding) · `doctor --probe live` runs real github/npm/http probes with B5 graceful degradation in CI/headless.\n\nWrite-side verbs (`deploy`, `install`) ship in v0.3+ as zone live-adapter packages publish.\n\n## License\n\nMIT · © 2026 0xHoneyJar\n","readmeFilename":"README.md","_rev":"1-4ba044f07b11ac138e9aa9d727d90af6"}