Install
$ agentstack add skill-keep-starknet-strange-starknet-agentic-controller-cli Open-source listing — not yet scanned by AgentStack. Follow the source repository for install instructions.
Security review
⚠ Flagged1 finding(s); flagged for manual review. · v0.1.0 How review works →
- • Prompt-injection patterns
- • Secret / credential exfiltration
- • Dangerous shell & filesystem operations
- • Untrusted network calls
- • Known-malicious package signatures
- high Pipes remote content directly into a shell (remote code execution).
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Cartridge Controller CLI
Use this skill when you need to run the Cartridge Controller CLI (controller-cli) to create a scoped session (human-approved) and then execute Starknet transactions via that session.
When to Use
- Operating Cartridge Controller sessions with explicit network and least-privilege policies.
- Running
controllerorcontroller_safe.pyfor human-approved Starknet transactions.
When NOT to Use
- General Starknet scripting that does not rely on Cartridge Controller.
- Contract authoring, testing, deployment, or security audit workflows.
Related modules: [skills catalog](../README.md).
Non-Negotiable Rules
- Always pass
--jsonand treat outputs as JSON. - Always be explicit about network. Never rely on defaults:
--chain-id SN_MAIN|SN_SEPOLIA, or--rpc-url.controller registerrequires human browser authorization. Do not automate/bypass it.- Use least-privilege policies only. Do not add token transfer permissions unless explicitly requested.
- Transaction links: use Voyager only:
- Mainnet:
https://voyager.online/tx/0x... - Sepolia:
https://sepolia.voyager.online/tx/0x...
Quick Start
curl -fsSL https://raw.githubusercontent.com/cartridge-gg/controller-cli/main/install.sh | bash
export PATH="$PATH:$HOME/.local/bin"
controller --version
Safer Wrapper (Recommended)
This skill includes a small wrapper that enforces the rules above and normalizes output:
python3 scripts/controller_safe.py status
python3 scripts/controller_safe.py register --preset loot-survivor --chain-id SN_MAIN
python3 scripts/controller_safe.py execute 0xCONTRACT entrypoint 0xCALLDATA --rpc-url https://api.cartridge.gg/x/starknet/sepolia
Behavior:
- Adds
--jsonif missing. - Refuses to run
call|execute|register|transactionwithout--chain-idor--rpc-url. - Parses stdout as JSON.
- If
.status == "error", printserror_code,message,recovery_hintand exits non-zero.
Deterministic Workflow
1) Generate Keypair
controller generate --json
The private key is stored locally (typically ~/.config/controller-cli/).
2) Check Session Status
controller status --json
Common states:
no_session(no keypair)keypair_only(needs registration)active(registered and not expired)
3) Register Session (Human Approval Required)
Requirement: a human must approve in a browser.
Option A (preferred): preset policies:
controller register --preset loot-survivor --chain-id SN_MAIN --json
Option B: least-privilege policy file:
controller register --file policy.json --rpc-url https://api.cartridge.gg/x/starknet/sepolia --json
Authorization output includes short_url and/or authorization_url:
- Display
short_urlif present; otherwise displayauthorization_url. - Ask the user to open it and approve.
- The CLI blocks until approved or timeout (typically ~6 minutes).
4) Execute Transaction
Single call (positional args: contract, entrypoint, calldata):
controller execute 0xCONTRACT transfer 0xRECIPIENT,0xAMOUNT_LOW,0xAMOUNT_HIGH \
--rpc-url https://api.cartridge.gg/x/starknet/sepolia \
--json
Multiple calls from file:
controller execute --file calls.json --rpc-url https://api.cartridge.gg/x/starknet/sepolia --json
Optional confirmation wait:
controller execute --file calls.json --rpc-url https://api.cartridge.gg/x/starknet/sepolia --wait --timeout 300 --json
5) Read-Only Call (No Session Needed)
controller call 0xCONTRACT balance_of 0xADDRESS --chain-id SN_SEPOLIA --json
6) Transaction Status
controller transaction 0xTX_HASH --chain-id SN_SEPOLIA --wait --timeout 300 --json
7) Lookup Usernames / Addresses
controller lookup --usernames alice,bob --json
controller lookup --addresses 0x123...,0x456... --json
Network Selection
Always be explicit about network.
Supported networks:
| Chain ID | RPC URL | | --- | --- | | SN_MAIN | https://api.cartridge.gg/x/starknet/mainnet | | SN_SEPOLIA | https://api.cartridge.gg/x/starknet/sepolia |
Priority order:
--rpc-urlflag- Stored session RPC URL (from registration)
- Config default (lowest)
If network is ambiguous:
- Run
controller status --json - Match the session
chain_id, or ask the user
Paymaster Control
Default behavior uses the paymaster (free execution). If the paymaster is unavailable, the transaction fails (no silent fallback).
To self-pay with user funds:
controller execute ... --no-paymaster --json
Amount Encoding (u256)
Many ERC20-style amounts are u256 split into (low, high) u128 limbs.
For values that fit in u128 (most cases): set high = 0x0.
Example calldata: 0xRECIPIENT,0x64,0x0
Error Handling
Errors are JSON:
{
"status": "error",
"error_code": "ErrorType",
"message": "...",
"recovery_hint": "..."
}
Always branch on error_code and follow recovery_hint.
Common recoveries:
NoSession: runcontroller generate --jsonSessionExpired: re-runcontroller register ... --jsonManualExecutionRequired: policy does not authorize the call; tighten/adjust policy and re-registerCallbackTimeout: user did not approve quickly enough; re-runregisterand retry
Input Validation
Addresses must be 0x-prefixed hex.
python3 scripts/validate_hex_address.py 0xabc...
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: keep-starknet-strange
- Source: keep-starknet-strange/starknet-agentic
- License: MIT
- Homepage: https://starknet-agentic.com
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.