_ _
| || | _
-| || || |
#### ### ## ## ##### ### ## ## | || || |-
## ## ## ## ## ## ## ## ## ## ## ## \ \_ || |
## ## ## ## # ## ##### ## ## #### | _/
## ## ## ## ## # ## ## ## ## ## ## -| | \
#### ### ## ## ##### ### ## |_|-
An interactive terminal console for the Cowboy blockchain. Lasso wraps the cowboy CLI into a persistent session with project detection, command history, and local state tracking.
brew install cowboyinc/tap/lasso(The fully-qualified name matters — plain lasso is an unrelated SAML library in homebrew-core.)
Or run from source:
npm install
npm run devLasso connects to mesa, the public Cowboy devnet, by default — no setup required. New to Cowboy? Run /walkthrough for a guided tour of how the system works.
On launch, Lasso checks the current directory for a .cowboy/ project. If none is found, run /init to create one:
/init # mesa, the public devnet (default)
/init local # a node you run yourself
This initializes the project, generates a wallet, requests faucet funds for it, and scaffolds a starter actor. Wallets with a zero balance are automatically topped up from the faucet at launch; /faucet requests more any time.
| Command | Description |
|---|---|
init [mesa|local] |
Initialize project environment (default: mesa) |
walkthrough [n] |
Guided tour of how Cowboy works |
docs [topic] |
Browse bundled Cowboy reference docs |
faucet [address] |
Request devnet CBY (defaults to your wallet) |
help |
Show all available commands |
clear |
Clear the console |
exit |
Quit lasso |
| Command | Description |
|---|---|
actor deploy <file.py> |
Deploy an actor to the chain |
actor execute --actor <a> --handler <h> [--payload <json>] |
Execute an actor handler |
actor get --address <a> |
Get actor details |
actor address --code <f> --creator <c> --salt <s> |
Compute actor address |
actor new <name> |
Scaffold a new actor project |
actor list |
List deployed actors |
actor logs --address <a> |
View actor logs |
| Command | Description |
|---|---|
runner get --address <a> |
Get runner details |
runner list |
List all runners |
runner register --stake <amount> |
Register as a runner |
Lasso runs as a persistent terminal session built with Ink. Commands are parsed locally and dispatched to the cowboy CLI as subprocesses or sent straight to the validator RPC. Some commands have additional behavior:
initextracts the wallet address from the CLI output and tracks it in.cowboy/config.jsonactor deployextracts the actor address and tracks it locallyactor listis a lasso-only command that lists all actors you've deployed from this consolefaucetand the launch-time auto-fund call the validator'sPOST /faucetendpoint directly- plain text starts the Cowboy harness through Cattle Guard, with wallet-proven admission and resumable event streaming
- local harness tools stay inside the project sandbox; reads exclude protected paths, while writes, commands, deploys, and signatures use Lasso's approval policy
- Dashboard stores the conversation and native run reference when available, but it is no longer the harness transport
The status bar at the bottom shows the current network, project status, and wallet address.
Lasso now uses a shared line editor for the command prompt and masked inputs.
Ctrl+A/Ctrl+Emove to the start or end of the lineCtrl+B/Ctrl+For left/right arrows move one characterAlt+B/Alt+Fmove by word when your terminal sends Meta/Option sequencesCtrl+Hor Backspace deletes backwardCtrl+Dor Delete deletes forwardCtrl+Uclears from the cursor back to the start of the lineCtrl+Kclears from the cursor to the end of the lineCtrl+Wdeletes the previous word- Up/down arrows navigate command history in the main prompt
Ctrl+Cclears the line first; pressing it again on an empty prompt exits Lasso
macOS caveats:
Optionshortcuts depend on your terminal being configured to send Meta/Escape sequences. Terminal.app and iTerm2 may need an explicit Option-as-Meta setting forAlt+B/Alt+Fto work.Commandshortcuts are best-effort only. Most terminals keepCommand+Arrowand similar combinations for local UI actions, so Lasso may never receive those key events.
Config is stored at .cowboy/config.json in the project directory (written by cowboy init, shared with the CLI). Per environment:
rpc_url- the target validator endpoint (default:https://rpc.mesa.cowboylabs.net)key_file- wallet key location under.cowboy/keys/cattle_guard_url- Cattle Guard origin for harness runs; Canyon automatically selectshttps://cattle-guard.canyon.cowboylabs.netdashboard_url- dashboard API origin for conversation history, native-run registration, files, and live actor lists; known networks automatically select their matching dashboardrunner_url- optional OpenAI-compatible runner endpoint used only as the legacy direct fallback when Cattle Guard is not configuredactors- deployed actor addresses and labels
On Canyon, plain-text prompts go directly to Cattle Guard at
https://cattle-guard.canyon.cowboylabs.net. Lasso negotiates the protocol,
proves control of the project wallet, streams durable harness events, and
services the canonical local_list, local_read, and local_write tools.
Dashboard receives a wallet-proven conversation and run reference so the same
work remains visible there; it does not proxy the harness stream.
Each turn carries the wallet's CIP-9 workspace delegation, so the harness
mounts the wallet's workspace CBFS volume and the agent's files persist
there. Lasso fetches the bundle from the dashboard through a one-time signed
challenge and holds it in memory for the session only. A wallet without a
delegation is asked once to enable it; the mint signs two delegation hashes
with the project key. /sync uses the same workspace volume by default.
Transaction requests are fetched from Cattle Guard's protected request API.
Lasso shows an approval and uses cowboy transaction sign-hash --expect-tx-hex to decode the exact unsigned transaction, recompute its hash,
and confirm the active wallet is a signer before returning a signature. This
path requires Cowboy CLI 0.0.34 or newer.
Cattle Guard endpoints are intentionally restricted to the Canyon production origin or a loopback development origin because the requests carry replayable wallet access proofs. Unknown RPC environments do not inherit a Canyon or Mesa backend automatically.
Google-backed Dashboard wallets require an explicit end-to-end encrypted
browser pairing flow; the backend cannot download those keys because it never
possesses the Drive token or decrypted wallet. The proposed /login contract
is documented in docs/GOOGLE_WALLET_PAIRING.md.
To use a direct vLLM runner instead, omit cattle_guard_url and point
runner_url at your runner.
Business Source License 1.1 — see LICENSE.
Files sync and workspace delegation use the Dashboard request authorization protocol. Lasso constructs the statement from its configured Dashboard origin, wallet, method, target and request body, with a fresh challenge and an operation ID. A bounded transport retry obtains fresh authorization for the same operation. If an operation cannot be confirmed, check the remote result before starting it again.
Roll out this lasso version together with the matching Dashboard frontend/backend and macOS versions. Deploy the Dashboard operation-store migration before the coordinated cutover. Existing lasso and macOS installations must upgrade at that cutover; mixed client/server protocol versions are unsupported.