flowchart TD
I["Install CLI: curl getstream.io/cli.sh | bash"] --> INIT["getstream init<br/>auth · pick app · offers skills"]
INIT -->|writes markdown only| OK["Skills don't execute"]
OK --> A["Router needs a pack it doesn't have"]
OK --> B["/stream-builder needs UI scaffolding"]
A -->|"getstream skills <name>"| FETCH["Fetch skill markdown<br/>most packs silent · Flutter asks"]
B -->|"lists them, waits"| FE["Optional frontend skills"]
style I fill:#e1f3ff
style INIT fill:#e1f3ff
style OK fill:#e1ffe4
style FETCH fill:#fff3e1
style FE fill:#fff3e1Security and trust
Stream Agent Skills are markdown only, so nothing about the skills executes when you install them. Network operations happen at three points: the getstream CLI you install yourself, on-demand skill fetches the router runs (silent for most packs; the Flutter pack asks first), and optional installs the agent asks about before running.
Everything across the lifecycle that can reach the network, and when:
The getstream CLI
You install the getstream CLI yourself (see Install for the command) — the skills never run the installer for you. If it's missing when a task needs it, the skill stops and asks. Everything it does after that runs on your machine, under your account.
The CLI covers the same operations as the Stream Dashboard, from the terminal, so the agent reaches for it rather than an MCP server or ad-hoc API calls.
Install time (skills)
The skills land via getstream init / getstream skills: downloaded into a shared cache at ~/.stream/skills and linked into the project's skills directory. Only markdown reaches your agent's skills path; nothing executes.
On-demand skill fetches
The router installs a pack the first time a task needs one that isn't present, using getstream skills <name>. The web pack (stream-react) and the platform packs for Swift, Android and React Native install silently, without a prompt; the Flutter pack asks for one confirmation first. Each fetch pulls markdown from GetStream/agent-skills.
Frontend skills
Only /stream-builder triggers this step, and only when it needs UI scaffolding. It offers to pull three open-source frontend skills from vercel-labs/agent-skills and anthropics/skills, listing them and waiting for your approval before installing anything. If you decline, the build still works fine without them. /stream-react never installs these itself; it only uses them if they're already present in the session.
Credentials
Credentials are owned by the getstream CLI. It writes your API key (and, for server targets, your secret) into the project's env file, and they never enter the agent's prompt context.
getstream init stores the project credentials it manages in the project's .stream/ directory and adds .stream/ to the repo's .gitignore automatically, so they are never committed.
The rules every skill follows forbid reading, logging, or echoing secrets on any code path: the skills never cat or grep a .env, and the server secret never reaches the client bundle.