internet-court/altllm-portal-auth
Use this skill when the user asks to log in or out with a wallet session, fetch a wallet sign-in challenge, verify an externally signed challenge, or troubleshoot AltLLM Portal wallet login for the local altllm CLI. Do NOT use for API key management, billing history, or payment links.
npx skills add https://github.com/internet-court/internet-court-skill --skill altllm-portal-auth
Wallet login and session bootstrap for the local altllm CLI, including external signers such as Privy.
> Before the first altllm command in a fresh checkout, read and follow:
> - ../_shared/preflight.md
> - ../_shared/session-and-target.md
| Command | Purpose |
|---|---|
| login-wallet --private-key-env <name> | Sign in with a locally available private key from an environment variable |
| login-wallet --private-key-file <path> | Sign in with a locally available private key from a file |
| login-wallet --private-key <hex> --allow-unsafe-private-key-argv | Sign in with an inline private key when argv exposure is explicitly accepted |
| login-wallet --prepare | Fetch a challenge for external signing |
| login-wallet --nonce <nonce> --signature <sig> | Verify an externally signed challenge and save the session |
| status | Show saved Portal session user and target URL status without exposing the token |
| logout | Remove the local saved Portal session file |
--signature is available, return the challenge payload and stop.--prepare and external signing instead of local auto-signing.~/.altllm/portal-cli-session.json unless overridden.status or its whoami alias to confirm the saved user and target URL before running live commands.logout only removes the local session file. It does not revoke API keys.See references/cli-reference.md for commands, payloads, and troubleshooting notes.
Take internet-court/altllm-portal-auth from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.