> ## Documentation Index
> Fetch the complete documentation index at: https://infisical-groups-phase-3.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# SDKs

From local development to production, Infisical SDKs provide the easiest way for your app to fetch back secrets from Infisical on demand.

* Install and initialize a language-specific client SDK into your application
* Provision the client scoped-access to a project and environment in Infisical
* Fetch secrets on demand

<CardGroup cols={2}>
  <Card title="Node" href="/sdks/languages/node" icon="node" color="#68a063">
    Manage secrets for your Node application on demand
  </Card>

  <Card href="/sdks/languages/python" title="Python" icon="python" color="#4c8abe">
    Manage secrets for your Python application on demand
  </Card>

  <Card href="/sdks/languages/java" title="Java" icon="java" color="#e41f23">
    Manage secrets for your Java application on demand
  </Card>

  <Card href="/sdks/languages/csharp" title="C#" icon="bars" color="#368833">
    Manage secrets for your C#/.NET application on demand
  </Card>
</CardGroup>

## FAQ

<AccordionGroup>
  <Accordion title="Isn't it inefficient if my app makes a request every time it needs a secret?">
    The client SDK caches every secret and implements a 5-minute waiting period before re-requesting it. The waiting period can be controlled by
    setting the `cacheTTL` parameter at the time of initializing the client.

    Note: The exact parameter name may differ depending on the language.
  </Accordion>

  <Accordion title="What if a request for a secret fails?">
    The SDK caches every secret and falls back to the cached value if a request fails. If no cached
    value ever-existed, the SDK falls back to whatever value is on the process environment.
  </Accordion>

  <Accordion title="Can I attach the environment variables to my process environment?">
    Yes you can! The client SDK provides a method to attach the secrets to your process environment. When using the `listSecrets()` method, you
    can pass a `attachToProcessEnv` parameter, which tells the SDK to attach all the found secrets to your process environment.

    Note: The exact parameter name may differ depending on the language.
  </Accordion>

  <Accordion title="What if a request for a secret fails?">
    The SDK caches every secret and falls back to the cached value if a request fails. If no cached value is found, and the request fails, then the SDK throws an error.
  </Accordion>
</AccordionGroup>
