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

# SessionConfig

<span id="atoti.SessionConfig" />

> atoti.SessionConfig(<br />
>     \*,<br />
>     *ai*: [AiConfig](./atoti_ai.AiConfig#atoti_ai.AiConfig) | [None](https://docs.python.org/3/library/constants.html#None) = `None`,<br />
>     *app\_extensions*: [Mapping](https://docs.python.org/3/library/collections.abc.html#collections.abc.Mapping)\[[str](https://docs.python.org/3/library/stdtypes.html#str), [Path](https://docs.python.org/3/library/pathlib.html#pathlib.Path)] = `frozendict({})`,<br />
>     *base\_path*: [str](https://docs.python.org/3/library/stdtypes.html#str) = `'/'`,<br />
>     *branding*: [BrandingConfig](./atoti.config.BrandingConfig#atoti.BrandingConfig) | [None](https://docs.python.org/3/library/constants.html#None) = `None`,<br />
>     *extra\_jars*: [Sequence](https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence)\[[Path](https://docs.python.org/3/library/pathlib.html#pathlib.Path)] = `()`,<br />
>     *i18n*: [I18nConfig](./atoti.config.I18nConfig#atoti.I18nConfig) | [None](https://docs.python.org/3/library/constants.html#None) = `None`,<br />
>     *java\_options*: [Sequence](https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence)\[[str](https://docs.python.org/3/library/stdtypes.html#str)] = `()`,<br />
>     *limits*: [LimitsConfig](./atoti_limits.LimitsConfig#atoti_limits.LimitsConfig) | [None](https://docs.python.org/3/library/constants.html#None) = `None`,<br />
>     *logging*: [LoggingConfig](./atoti.config.LoggingConfig#atoti.LoggingConfig) | [None](https://docs.python.org/3/library/constants.html#None) = `None`,<br />
>     *observability*: [ObservabilityConfig](./atoti_observability.ObservabilityConfig#atoti_observability.ObservabilityConfig) | [None](https://docs.python.org/3/library/constants.html#None) = `None`,<br />
>     *port*: [int](https://docs.python.org/3/library/functions.html#int) = `0`,<br />
>     *ready*: [bool](https://docs.python.org/3/library/functions.html#bool) = `True`,<br />
>     *security*: [SecurityConfig](./atoti.config.security.SecurityConfig#atoti.SecurityConfig) | [None](https://docs.python.org/3/library/constants.html#None) = `None`,<br />
>     *user\_content\_storage*: [Path](https://docs.python.org/3/library/pathlib.html#pathlib.Path) | [UserContentStorageConfig](./atoti_jdbc.UserContentStorageConfig#atoti_jdbc.UserContentStorageConfig) | [None](https://docs.python.org/3/library/constants.html#None) = `None`,<br />
> )

The config passed to [`atoti.Session.start()`](./atoti.Session.start#atoti.Session.start).

### Attributes

<h4 id="atoti.SessionConfig.ai">
  *ai*
</h4>

> [AiConfig](./atoti_ai.AiConfig#atoti_ai.AiConfig) | [None](https://docs.python.org/3/library/constants.html#None)

<h4 id="atoti.SessionConfig.app_extensions">
  *app\_extensions*
</h4>

Mapping from the name of an Atoti UI extension (i.e. `name` property in their `package.json`) to the path of its `dist` directory.

<Note>
  This feature is not part of the community edition: it needs to be [unlocked](../guides/unlocking_all_features).
</Note>

[Atoti UI extensions](https://docs.activeviam.com/products/atoti/ui/5.2/developer-guide/customize-atoti-ui/reuse-extensions/create-reusable-extensions/) can [enhance the app](../guides/extending_the_app) in many ways such as:

* Adding new widget plugins.
* Attaching custom menu items or titlebar buttons to a set of widgets.
* Providing other React contexts to the components rendered by the app.

<Callout icon="link">
  **See also**:
  Prebuilt extensions in [`atoti.app_extension`](./atoti.app_extension#module-atoti.app_extension).
</Callout>

<h4 id="atoti.SessionConfig.base_path">
  *base\_path*
</h4>

Path from which the session is served.

[`atoti.Session.url`](./atoti.Session.url#atoti.Session.url) includes it.
: For example, with `base_path="/foo/bar"`, [`url`](./atoti.Session.url#atoti.Session.url) will be `http://localhost:{port}/foo/bar`.

<h4 id="atoti.SessionConfig.branding">
  *branding*
</h4>

> [BrandingConfig](./atoti.config.BrandingConfig#atoti.BrandingConfig) | [None](https://docs.python.org/3/library/constants.html#None)

<h4 id="atoti.SessionConfig.extra_jars">
  *extra\_jars*
</h4>

Paths of JARs to add to the classpath of the Java subprocess.

<h4 id="atoti.SessionConfig.i18n">
  *i18n*
</h4>

> [I18nConfig](./atoti.config.I18nConfig#atoti.I18nConfig) | [None](https://docs.python.org/3/library/constants.html#None)

<h4 id="atoti.SessionConfig.java_options">
  *java\_options*
</h4>

Additional options to pass when starting the Java subprocess (e.g. for optimization or debugging purposes).

In particular, the `-Xmx` option can be set to increase the amount of RAM that the session can use.
If this option is not specified, the JVM default memory setting is used which is 25% of the machine memory.

<Warning>
  These options are passed as is to the Java subprocess with no guarantee that the [`Session`](./atoti.Session#atoti.Session) will behave as expected.
  Options that work with one version of Atoti Python SDK may break with another, even across a bugfix release.
</Warning>

<h4 id="atoti.SessionConfig.limits">
  *limits*
</h4>

> [LimitsConfig](./atoti_limits.LimitsConfig#atoti_limits.LimitsConfig) | [None](https://docs.python.org/3/library/constants.html#None)

<h4 id="atoti.SessionConfig.logging">
  *logging*
</h4>

> [LoggingConfig](./atoti.config.LoggingConfig#atoti.LoggingConfig) | [None](https://docs.python.org/3/library/constants.html#None)

<h4 id="atoti.SessionConfig.observability">
  *observability*
</h4>

> [ObservabilityConfig](./atoti_observability.ObservabilityConfig#atoti_observability.ObservabilityConfig) | [None](https://docs.python.org/3/library/constants.html#None)

<h4 id="atoti.SessionConfig.port">
  *port*
</h4>

Port on which the session will listen to.

If `0`, the OS will pick an available port.

<h4 id="atoti.SessionConfig.ready">
  *ready*
</h4>

Initial value of [`atoti.Session.ready`](./atoti.Session.ready#atoti.Session.ready).

<h4 id="atoti.SessionConfig.security">
  *security*
</h4>

> [SecurityConfig](./atoti.config.security.SecurityConfig#atoti.SecurityConfig) | [None](https://docs.python.org/3/library/constants.html#None)

<h4 id="atoti.SessionConfig.user_content_storage">
  *user\_content\_storage*
</h4>

Config controlling how user content is stored.

If a `Path` is given, the content will be stored in the corresponding directory.
If `None`, the content will be stored in memory and will be lost when the session is closed.

When not `None` and the [`observability plugin`](./atoti_observability#module-atoti_observability) is enabled, the history of executed queries is also recorded and accessible in Admin UI (`f"{session.url}/admin"`) under the **Query history** tab.
