Quick Start: CLI
Install morse-cli and go from zero to published content on testnet in under five minutes. No contracts, no code, just your terminal.
Prerequisites
| Requirement | Details | Purpose |
|---|---|---|
| Bun or Node | v1.2+ / ≥ 18 | JavaScript runtime |
| Sui wallet | Sui Wallet, Suiet, or any Sui-compatible wallet | Signing transactions on testnet |
| SUI + WAL tokens | SUI faucet · Swap SUI for WAL | Gas fees (SUI) and Walrus storage fees (WAL) |
| Bech32 private key | A suiprivkey1... string | CLI authentication. Export from your wallet's settings |
Installing
Install the CLI globally using your preferred package manager.
npm i -g @arcadiasystems/morse-cli
bun add -g @arcadiasystems/morse-cli
Verify the installation:
morse --help
Creating a profile
A profile stores your network, RPC endpoint and active context. Create one for testnet:
morse config add testnet --network testnet
Verify your profile is active:
morse status
Importing your key
Import a Sui private key into the encrypted keystore. The CLI prompts interactively for the key and a password. Keys are never passed as flags.
morse account import
suiprivkey1... string. Export one from your wallet's settings. For non-interactive environments (CI, scripts), set MORSE_PRIVATE_KEY instead; the CLI uses it directly and skips the keystore prompt.Creating a publication
This creates a publication with a globally unique slug and auto-selects it as the active context.
morse publication create --name "My Blog" --slug "my-blog-$(date +%s)"
ESlugAlreadyExists.Creating "My Blog"... Created "My Blog" (0x23d2...) ownerCap: 0xa40a... publisherCap: 0x6141... tx: 7nF2n... Selected as the active publication.
morse status to see your active publication ID and collection.Creating a collection
Collections group entries within a publication. The CLI auto-selects the new collection as your active context, so subsequent entry commands target it automatically.
morse collection create posts
Creating collection "posts" (blob)... Created collection "posts". Selected as the active collection. (tx: DWkD...)
Publishing an entry
Create a content file and publish it. The CLI uploads the file to Walrus and registers the entry on-chain.
Insufficient WAL balance.echo '{"title": "Hello World", "body": "My first post on Morse."}' > post.json
Publish it. The CLI targets the active publication and collection by default. You can override with -P <slug|id> and -C <name>:
morse entry add hello --file post.json
Uploading 65 bytes to Walrus... ✔ Added entry #0 "hello" (tx: D9Yfjk...) view: https://aggregator.walrus-testnet.walrus.space/v1/blobs/0iKeii...
Reading it back
Fetch the entry content by its ID. Entry IDs are monotonic; your first entry is 0.
morse entry read 0
entry read fetches the content from the Walrus storage nodes and checks it against the blob id recorded on Sui. See CLI Cookbooks → Reading it back.
{"title": "Hello World", "body": "My first post on Morse."}
morse status to see your active context, or morse entry list to see all entries in the collection. If you hit errors at any step, run morse --help or see the CLI Cookbooks troubleshooting section.