---
title: "Installation"
manual: "LLM Foundation"
version: "0.44"
permalink: "https://docs.typo3.org/permalink/netresearch/nr-llm:installation@0.44"
source: "Installation/Index.rst"
rendered: "2026-11-12T17:35:48+00:00"
---

# Installation {#installation}

## Quick start {#quickstart}

The recommended way to install this extension is via Composer:

**Install via Composer**

```bash
composer require netresearch/nr-llm
```

After installation:

1.  Run `vendor/bin/typo3 extension:setup` to create the schema and
    finish package setup. Composer-installed extensions are already active.
1.  Run the setup wizard, the first entry in **AI > Setup**. It
    creates a provider, its models and a configuration in one pass. While no
    provider exists, **AI > Overview** opens with a button to it, and
    on TYPO3 v14 the **AI > Setup** overview does too.
1.  Adjust what the wizard created, or add more, in
    **AI > Setup > Providers**, **Models** and
    **Configurations**.
1.  Clear caches.

## Composer installation {#installation-composer}

### Requirements {#installation-requirements}

Ensure your system meets these requirements:

-   PHP 8.2 or higher.
-   TYPO3 v13.4 LTS or v14.3 LTS.
-   Composer 2.x.
-   [`netresearch/nr-vault`](https://packagist.org/packages/netresearch/nr-vault) ^1.5 (required for
    API key encryption; installed automatically via
    Composer).

### Installation steps {#installation-steps}

1.  **Add the package**

    **Install via Composer**

    ```bash
    composer require netresearch/nr-llm
    ```
1.  **Set up the installed packages**

    **Initialize installed extensions**

    ```bash
    vendor/bin/typo3 extension:setup
    ```

    TYPO3 treats Composer-installed extensions as active. There is no separate
    activation in the Extension Manager.
1.  **Configure API keys**

    Use the setup wizard at
    **AI > Setup > Setup Wizard**
    to auto-detect your provider and discover models.

    ![LLM setup wizard](../Images/backend-setup-wizard.png)

    > [!TIP]
    > Not sure which provider you need? **AI > Setup > Get
    > Started** asks what you want to do first — editorial assistance,
    > translation, metadata, media accessibility, agent workflows, developer
    > integration — and can install a use-case pack for it: a configuration,
    > tasks and prompt snippets, created only after you confirm the list. The
    > *Editorial Starter* pack is the one currently shipped. The setup wizard
    > stays the technical route and is linked from every screen there.
    >
    > The plan you confirm also states the three things an install changes that
    > are not new records: the snippet tags it adds to the pack's own
    > configuration, any existing configuration that already selects one of
    > those tags and would therefore compose the pack's snippets into its
    > prompts too, and any existing snippet carrying one of those tags, which
    > the added tags compose into the pack's configuration. See
    > [Get Started: use-case packs](https://docs.typo3.org/permalink/netresearch/nr-llm:administration-usecase-packs@0.44).

    See [Configuration reference](https://docs.typo3.org/permalink/netresearch/nr-llm:configuration@0.44) for detailed setup
    instructions.
1.  **Clear caches**

    **Flush all caches**

    ```bash
    vendor/bin/typo3 cache:flush
    ```

## Composer is required {#installation-manual}

This guide supports Composer installations. The required nr-vault dependency
also requires Composer; extracting a TER archive alone does not install a
supported dependency chain.

## Database setup {#installation-database}

Run `extension:setup` after Composer installation. The table below is an
orientation, not a complete schema inventory; [`ext_tables.sql`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/ExtTablesSql.html#file-extension-ext-tables-sql) is the
versioned source for all extension-owned tables and added core-table fields.

| Table | Purpose |
| --- | --- |
| `tx_nrllm_provider` | Stores provider connections and nr-vault credential identifiers. |
| `tx_nrllm_model` | Stores available LLM models with capabilities and pricing. |
| `tx_nrllm_configuration` | Stores use-case-specific configurations with prompts and parameters. |
| `tx_nrllm_task` | Stores one-shot prompt tasks for common operations. |
| `tx_nrllm_promptsnippet` | Stores tagged prompt fragments for configuration composition. |
| `tx_nrllm_ai_session` / `tx_nrllm_ai_session_message` | Stores conversations and their messages. |
| `tx_nrllm_agentrun` / `tx_nrllm_agentrun_event` | Stores run state, approvals and privacy-filtered events. |
| `tx_nrllm_service_usage` | Tracks LLM and specialized-service usage. |

Run the database compare tool after installation:

**Set up extension database tables**

```bash
vendor/bin/typo3 extension:setup
```

## Cache configuration {#installation-cache}

The extension uses TYPO3's caching framework. Cache
configuration is set up automatically — **no backend
is hardcoded**. TYPO3 uses your instance's default
cache backend, so Redis, Valkey, or Memcached work
transparently if configured.

To override the cache backend specifically for nr-llm:

**config/system/additional.php**

```php
use TYPO3\CMS\Core\Cache\Backend\RedisBackend;

$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']
    ['cacheConfigurations']['nrllm_responses']
    ['backend'] = RedisBackend::class;
```

## Upgrading {#installation-upgrading}

### From previous versions {#installation-upgrading-previous}

1.  **Backup your database** before upgrading.
1.  Run Composer update:

    **Update the extension**

    ```bash
    composer update netresearch/nr-llm --with-all-dependencies
    ```
1.  Run package setup, inspect schema changes and list pending upgrade wizards:
    `vendor/bin/typo3 extension:setup` and
    `vendor/bin/typo3 upgrade:list`. Review each applicable wizard before
    running it with `vendor/bin/typo3 upgrade:run <identifier>`.
    These include provider timeouts, enforcement defaults and skill-version
    digests; a skill digest is not a new approval.

    Apply required schema additions:

    **Update database schema**

    ```bash
    vendor/bin/typo3 database:updateschema
    ```
1.  Clear all caches:

    **Flush all caches**

    ```bash
    vendor/bin/typo3 cache:flush
    ```

### Breaking changes {#installation-breaking-changes}

Check the [Changelog](https://docs.typo3.org/permalink/netresearch/nr-llm:changelog@0.44) for breaking changes between versions.

## Uninstallation {#installation-uninstall}

To remove the extension:

1.  Stop nr-llm workers and scheduled jobs, remove consumer integrations and
    take a database backup. Decide which retained records must be exported.
1.  Remove via Composer:

    **Remove the extension**

    ```bash
    composer remove netresearch/nr-llm
    ```
1.  Back up the database before removing retained data. The following removes
    all nr-llm-owned tables in this version, including conversations, runs,
    approvals, usage and OAuth grants. Review the installed version's schema
    before running it. It does not remove nr-llm fields on core tables or
    secrets held separately in nr-vault; review those separately.

    Clean up the extension-owned tables if desired:

    **Drop extension database tables**

    ```sql
    DROP TABLE IF EXISTS tx_nrllm_provider;
    DROP TABLE IF EXISTS tx_nrllm_model;
    DROP TABLE IF EXISTS tx_nrllm_configuration;
    DROP TABLE IF EXISTS tx_nrllm_user_budget;
    DROP TABLE IF EXISTS tx_nrllm_configuration_begroups_mm;
    DROP TABLE IF EXISTS tx_nrllm_task;
    DROP TABLE IF EXISTS tx_nrllm_promptsnippet;
    DROP TABLE IF EXISTS tx_nrllm_term_list;
    DROP TABLE IF EXISTS tx_nrllm_glossary;
    DROP TABLE IF EXISTS tx_nrllm_service_usage;
    DROP TABLE IF EXISTS tx_nrllm_skill_source;
    DROP TABLE IF EXISTS tx_nrllm_skill;
    DROP TABLE IF EXISTS tx_nrllm_skill_approval;
    DROP TABLE IF EXISTS tx_nrllm_task_skill_mm;
    DROP TABLE IF EXISTS tx_nrllm_configuration_skill_mm;
    DROP TABLE IF EXISTS tx_nrllm_tool_state;
    DROP TABLE IF EXISTS tx_nrllm_tool_group_state;
    DROP TABLE IF EXISTS tx_nrllm_telemetry;
    DROP TABLE IF EXISTS tx_nrllm_skill_audit;
    DROP TABLE IF EXISTS tx_nrllm_eval_result;
    DROP TABLE IF EXISTS tx_nrllm_agentrun;
    DROP TABLE IF EXISTS tx_nrllm_agentrun_event;
    DROP TABLE IF EXISTS tx_nrllm_ai_session;
    DROP TABLE IF EXISTS tx_nrllm_ai_session_message;
    DROP TABLE IF EXISTS tx_nrllm_governance_event;
    DROP TABLE IF EXISTS tx_nrllm_mcp_server;
    DROP TABLE IF EXISTS tx_nrllm_mcp_tool;
    DROP TABLE IF EXISTS tx_nrllm_call_outcome;
    DROP TABLE IF EXISTS tx_nrllm_worker_heartbeat;
    DROP TABLE IF EXISTS tx_nrllm_mcp_oauth_grant;
    ```
1.  Review added page/content columns with TYPO3's schema comparison. Remove
    only fields no longer used by an installed extension. Separately remove
    obsolete nr-llm grants from the groups' existing custom-permission field;
    these grants are not separate nr-llm columns on backend-user/group tables.
1.  Flush the `nrllm` cache group and remove scheduled purge/worker jobs.
1.  Review credentials and OAuth grants in nr-vault separately. Deleting
    nr-llm tables does not delete shared vault secrets. Revoke credentials at
    the provider only after checking other consumers.
1.  Apply the organisation's backup/export retention policy. Live database
    cleanup does not erase earlier backups, logs or external provider data.
