> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ss14.art/llms.txt
> Use this file to discover all available pages before exploring further.

# Environments

Toolshed's primary method of controling which commands are available (which dictates everything from parsing to execution flow) is through `ToolshedEnvironment`. The default environment lives at `ToolshedManager.DefaultEnvironment`, and contains every command with the `[Toolshedcommand]` attribute applied.

## Best practices

* Cache your environments, `ToolshedEnvironment` is extremely expensive to create and should not be created more than once per system using them if possible.
* Avoid using the default environment for non-debug things, construct your own environment for your systems.
* Don't abuse reflection to obtain command types that're marked internal or private, **internal APIs are guaranteed to be unstable.**
