From 0d59cbfb886320c0e0e1bc946f437f709ee705cc Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Fri, 4 Sep 2026 12:47:25 +0200 Subject: [PATCH 01/10] Add docs for automation-worker --- .../components/automation-worker.md | 37 +++++++++++++++++++ docs/introduction/architecture.md | 18 ++++++++- mkdocs.yml | 1 + 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 docs/configuration/components/automation-worker.md diff --git a/docs/configuration/components/automation-worker.md b/docs/configuration/components/automation-worker.md new file mode 100644 index 00000000..0a1b2287 --- /dev/null +++ b/docs/configuration/components/automation-worker.md @@ -0,0 +1,37 @@ +--- +description: Complete reference for automation-worker configuration including workers and PDF generation settings. +--- + +# Configuration of automation-worker + +This is a cheat sheet for the possible configuration options of the [automation-worker](../../introduction/architecture.md#container-automation-worker). +It contains all possible settings that can be configured as well as their default values. + +The automation-worker is a dedicated component that executes automation rules. +It reads pending automation tasks from Redis, runs the configured actions (e.g. sending emails, running Python scripts, generating PDFs or triggering AI-powered automations), and publishes the results back to Redis. + +The default values provided here are best-effort (not built automatically). They will be used if no value is defined at all. + +??? tip "Configuration changes require a restart" + + New configuration options will only apply after a restart of the automation-worker. + +## Environment Variables + + + +This section lists the environment variables read by the automation-worker. +Please read our guide that explains how you can [customize the configuration](../customizations.md) of your SeaTable instance before you proceed. + +### Workers + +| Environment Variable | Description | Default | +| -------------------- | ---------------------------------------------------------------------- | ------- | +| `AUTOMATION_WORKERS` | Number of worker threads that process automation rule tasks from Redis | 5 | + +### PDF Generation + +| Environment Variable | Description | Default | +| ---------------------------------- | -------------------------------------------------------- | ------- | +| `CONVERT_PDF_BROWSERS` | Number of browser processes started to generate PDF files | 2 | +| `CONVERT_PDF_SESSIONS_PER_BROWSER` | Number of sessions per browser instance | 3 | diff --git a/docs/introduction/architecture.md b/docs/introduction/architecture.md index b67dc7f8..fd9ad204 100644 --- a/docs/introduction/architecture.md +++ b/docs/introduction/architecture.md @@ -20,9 +20,13 @@ flowchart TB B[seatable-server
80] C[mariadb
3306] D[redis
6379] + E[automation-worker] A<-->B B<-->C B<-->D + B<-->E + E<-->C + E<-->D end F@{ shape: bow-rect, label: "Storage"} end @@ -30,7 +34,7 @@ flowchart TB The numbers designate the ports used by the containers. Port 443 in the container `caddy` must be exposed. Port 80 must also be exposed when a Let's Encrypt SSL certificate is to be used. All other ports are internal ports that are only available within the Docker network. -All Docker containers read from and write to local disk. The containers `caddy`, `seatable-server`, and `mariadb` employ Docker volumes. +All Docker containers read from and write to local disk. The containers `caddy`, `seatable-server`, `automation-worker` and `mariadb` employ Docker volumes. In an extended setup, additional, optional Docker container can be deployed to add functionality to SeaTable Server. The diagram below describes all Docker containers and their interactions required for a SeaTable Server instance integrated with office editor, Python pipeline, virus scan, and whiteboard. @@ -52,6 +56,7 @@ flowchart TB PSc[python-scheduler] PSt[python-starter] PR[python-runner] + AW[automation-worker] C<-->SS C<-->Tld C<-->OO @@ -67,6 +72,9 @@ flowchart TB SS<-->Tld SS<-->CAV SS<-->PSc + SS<-->AW + AW<-->MDB + AW<-->R end F@{ shape: bow-rect, label: "Storage"} end @@ -150,6 +158,14 @@ When actions are not executed immediately but with a time delay, SeaTable employ The api-gateway is a proxy for dtable-server and dtable-db. All API calls for [base operations](https://api.seatable.com/reference/getbaseinfo) are routed through this component. It is also essential for the effective enforcement of API rate and request limits. +## Container automation-worker + + + +The `automation-worker` container is a dedicated component that executes automation rules. It reads pending automation tasks from Redis, runs the configured actions (e.g. sending emails, running Python scripts, generating PDFs or triggering AI-powered automations), and publishes the results back to Redis. + +The automation-worker connects to the containers `mariadb` and `redis` to read (and write). In addition, it accesses the inner services of the `seatable-server` container (such as dtable-server, dtable-db and dtable-web) when an automation action interacts with a base. + ## Container mariadb SeaTable uses MariaDB to store user, group and team information as well as metadata for bases. Additionally, MariaDB stores the operation log. The operation log (saved in the database table `dtable_db.operation_log`) is the base journal. It records all modifications made within all bases of the SeaTable Server instance. (While SeaTable stores all base modifications in MariaDB, it doesn't store the actual base content. Instead, bases are managed within dtable-server and regularly persisted to dtable-storage-server for long-term storage.) diff --git a/mkdocs.yml b/mkdocs.yml index 9e2187fe..7e4256e4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -264,6 +264,7 @@ nav: - Overview: configuration/overview.md - Customizations: configuration/customizations.md - Components: + - automation-worker: configuration/components/automation-worker.md - dtable-api-gateway: configuration/components/dtable-api-gateway.md - dtable-db: configuration/components/dtable-db.md - dtable-events: configuration/components/dtable-events.md From 0a18c1d6e4473e7e8ca202809bf53991bca72681 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Mon, 7 Sep 2026 12:13:57 +0200 Subject: [PATCH 02/10] Update architecture documentation --- .../configuration/components/dtable-server.md | 4 ++-- docs/introduction/architecture.md | 24 +++++++++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/docs/configuration/components/dtable-server.md b/docs/configuration/components/dtable-server.md index 0de579b0..a0faf489 100644 --- a/docs/configuration/components/dtable-server.md +++ b/docs/configuration/components/dtable-server.md @@ -4,7 +4,7 @@ description: Complete reference for dtable-server configuration including row li # Configuration of dtable-server -This is a cheat sheet for the possible configuration options of [dtable-server](../../introduction/architecture.md#dtable-server). +This is a cheat sheet for the possible configuration options of [dtable-server](../../introduction/architecture.md#container-dtable-server). It contains all possible settings that can be configured as well as their default values. The default values provided here are best-effort (not built automatically). They will be used if no value is defined at all. @@ -17,7 +17,7 @@ The default values provided here are best-effort (not built automatically). They -This section lists the environment variables read by [dtable-server](../../introduction/architecture.md#dtable-server). +This section lists the environment variables read by [dtable-server](../../introduction/architecture.md#container-dtable-server). Please read our guide that explains how you can [customize the configuration](../customizations.md) of your SeaTable instance before you proceed. ### Automations diff --git a/docs/introduction/architecture.md b/docs/introduction/architecture.md index fd9ad204..6e8bac68 100644 --- a/docs/introduction/architecture.md +++ b/docs/introduction/architecture.md @@ -21,12 +21,17 @@ flowchart TB C[mariadb
3306] D[redis
6379] E[automation-worker] + G[dtable-server
5000] A<-->B B<-->C B<-->D B<-->E + B<-->G E<-->C E<-->D + E<-->G + G<-->C + G<-->D end F@{ shape: bow-rect, label: "Storage"} end @@ -34,7 +39,7 @@ flowchart TB The numbers designate the ports used by the containers. Port 443 in the container `caddy` must be exposed. Port 80 must also be exposed when a Let's Encrypt SSL certificate is to be used. All other ports are internal ports that are only available within the Docker network. -All Docker containers read from and write to local disk. The containers `caddy`, `seatable-server`, `automation-worker` and `mariadb` employ Docker volumes. +All Docker containers read from and write to local disk. The containers `caddy`, `seatable-server`, `dtable-server`, `automation-worker` and `mariadb` employ Docker volumes. In an extended setup, additional, optional Docker container can be deployed to add functionality to SeaTable Server. The diagram below describes all Docker containers and their interactions required for a SeaTable Server instance integrated with office editor, Python pipeline, virus scan, and whiteboard. @@ -57,6 +62,7 @@ flowchart TB PSt[python-starter] PR[python-runner] AW[automation-worker] + DS[dtable-server
5000] C<-->SS C<-->Tld C<-->OO @@ -73,8 +79,12 @@ flowchart TB SS<-->CAV SS<-->PSc SS<-->AW + SS<-->DS AW<-->MDB AW<-->R + AW<-->DS + DS<-->MDB + DS<-->R end F@{ shape: bow-rect, label: "Storage"} end @@ -134,10 +144,6 @@ All services in the container `seatable-server` connect to the containers `maria The task of the service dtable-web is to deliver all pages except for the bases themselves. This includes essential features such as the login page, home page, system administration area, team administration, personal settings, and API endpoints. All these functionalities are provided by dtable-web, which is built on the Django framework. -### dtable-server - -When accessing a base, you'll be directed to the base editor, which is provided by the dtable-server service. This editor loads the base's content from a JSON file, presenting it in a familiar spreadsheet interface and enabling real-time collaborative work on all data within the base. Each modification is promptly saved to the operation log (stored in MariaDB), and within minutes, these changes are persisted as a JSON file and transmitted to dtable-storage-server for storage in the attached storage system. - ### dtable-db dtable-db extends the functionality of dtable-server, offering an SQL-like query language to interact with base data. Additionally, it serves as the interface for accessing the Big Data Backend. @@ -158,6 +164,14 @@ When actions are not executed immediately but with a time delay, SeaTable employ The api-gateway is a proxy for dtable-server and dtable-db. All API calls for [base operations](https://api.seatable.com/reference/getbaseinfo) are routed through this component. It is also essential for the effective enforcement of API rate and request limits. +## Container dtable-server + + + +When accessing a base, you'll be directed to the base editor, which is provided by the dtable-server service. This editor loads the base's content from a JSON file, presenting it in a familiar spreadsheet interface and enabling real-time collaborative work on all data within the base. Each modification is promptly saved to the operation log (stored in MariaDB), and within minutes, these changes are persisted as a JSON file and transmitted to dtable-storage-server for storage in the attached storage system. + +**Note:** Previously, `dtable-server` ran inside the `seatable-server` container. With version 7.0, it has been extracted to a dedicated container. + ## Container automation-worker From aaec148c499ff1e847debbdf5c7be2a474f0f8bb Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Mon, 7 Sep 2026 12:28:47 +0200 Subject: [PATCH 03/10] Document DTABLE_SERVER_TOTAL_CACHE_SIZE variable --- docs/configuration/components/dtable-server.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/configuration/components/dtable-server.md b/docs/configuration/components/dtable-server.md index a0faf489..834dcd3d 100644 --- a/docs/configuration/components/dtable-server.md +++ b/docs/configuration/components/dtable-server.md @@ -26,6 +26,17 @@ Please read our guide that explains how you can [customize the configuration](.. | --------------------------------------- | -------------------------------------------------------------------------- | ------- | | `AUTOMATION_RATE_LIMIT_PER_BASE_MINUTE` | Limits the number of automations that can be triggered per base per minute | 1000 | +### Caching + + + +The Golang implementation of `dtable-server` supports configuration of the base cache size. +Eviction happens based on an LRU (least recently used) policy. + +| Environment Variable | Description | Default | +| -------------------------------- | ----------------------------- | ------- | +| `DTABLE_SERVER_TOTAL_CACHE_SIZE` | Size of the base cache in MB. | 2000 | + ### Persistence | Environment Variable | Description | Default | From 9ffe6a83f2851e937f6cab68996b920a7b305b8e Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Tue, 22 Sep 2026 14:01:40 +0200 Subject: [PATCH 04/10] Update description of automation-worker container --- docs/introduction/architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/introduction/architecture.md b/docs/introduction/architecture.md index 6e8bac68..e855176d 100644 --- a/docs/introduction/architecture.md +++ b/docs/introduction/architecture.md @@ -178,7 +178,7 @@ When accessing a base, you'll be directed to the base editor, which is provided The `automation-worker` container is a dedicated component that executes automation rules. It reads pending automation tasks from Redis, runs the configured actions (e.g. sending emails, running Python scripts, generating PDFs or triggering AI-powered automations), and publishes the results back to Redis. -The automation-worker connects to the containers `mariadb` and `redis` to read (and write). In addition, it accesses the inner services of the `seatable-server` container (such as dtable-server, dtable-db and dtable-web) when an automation action interacts with a base. +The automation-worker connects to the containers `mariadb` and `redis` to read (and write). In addition, it accesses the container `dtable-server` and the inner services of the `seatable-server` container (such as dtable-db and dtable-web) when an automation action interacts with a base. ## Container mariadb From 85c196082d1cc65262eeb0ade7132c7059eb4fda Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Tue, 22 Sep 2026 14:13:34 +0200 Subject: [PATCH 05/10] Update COMPOSE_FILE references --- docs/configuration/customizations.md | 4 ++-- docs/configuration/overview.md | 2 +- docs/installation/basic-setup.md | 4 ++-- docs/installation/components/python-pipeline.md | 2 +- docs/installation/components/uptime-kuma.md | 2 +- docs/installation/deployment-approach.md | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/configuration/customizations.md b/docs/configuration/customizations.md index 8435a513..92737283 100644 --- a/docs/configuration/customizations.md +++ b/docs/configuration/customizations.md @@ -48,14 +48,14 @@ Add `custom-seatable-server.yml` to the `COMPOSE_FILE` variable inside your `.en A minimal SeaTable installation contains the following line inside the `.env` file (located at `/opt/seatable-compose/.env`): ```ini -COMPOSE_FILE='caddy.yml,seatable-server.yml' +COMPOSE_FILE='caddy.yml,seatable-server.yml,dtable-server.yml,automation-worker.yml' ``` Now simpli add `custom-seatable-server.yml` to the list of filenames that should be merged by Docker Compose. Additional filenames should be separated by a comma. ```ini -COMPOSE_FILE='caddy.yml,seatable-server.yml,custom-seatable-server.yml' +COMPOSE_FILE='caddy.yml,seatable-server.yml,dtable-server.yml,automation-worker.yml,custom-seatable-server.yml' ``` ### Step 3 diff --git a/docs/configuration/overview.md b/docs/configuration/overview.md index 2cf8ed51..c8c01ee7 100644 --- a/docs/configuration/overview.md +++ b/docs/configuration/overview.md @@ -22,7 +22,7 @@ it is sufficient to set/modify these variables directly inside your `.env` file. ```ini # components to be used -COMPOSE_FILE='caddy.yml,seatable-server.yml' # (1)! +COMPOSE_FILE='caddy.yml,seatable-server.yml,dtable-server.yml,automation-worker.yml' # (1)! COMPOSE_PATH_SEPARATOR=',' # system settings diff --git a/docs/installation/basic-setup.md b/docs/installation/basic-setup.md index fb654b41..eb53d8ac 100644 --- a/docs/installation/basic-setup.md +++ b/docs/installation/basic-setup.md @@ -126,7 +126,7 @@ Continue setting up your SeaTable server by adjusting only three more variables. ``` python # components to be used - COMPOSE_FILE='caddy.yml,seatable-server.yml' # (1)! + COMPOSE_FILE='caddy.yml,seatable-server.yml,dtable-server.yml,automation-worker.yml' # (1)! COMPOSE_PATH_SEPARATOR=',' # system settings @@ -152,7 +152,7 @@ Continue setting up your SeaTable server by adjusting only three more variables. SECRET_KEY='anothertopsecret' ``` - 1. COMPOSE_FILE is a comma-separated list **without spaces**. This list defines which components the server runs. Leave `caddy.yml` and `seatable-server.yml` at the beginning. You will add more components at a later time. + 1. COMPOSE_FILE is a comma-separated list **without spaces**. This list defines which components the server runs. Leave `caddy.yml`, `seatable-server.yml`, `dtable-server.yml` and `automation-worker.yml` at the beginning. You will add more components at a later time. 2. A [list of timezones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) is available on Wikipedia. 3. SEATABLE_SERVER_HOSTNAME is the (sub)domain (without http:// or https://) under which the server is accessible on (at least) port 80 and 443.
If you want to use a public IP address (e.g. 5.35.28.112), you can use the free service [nip.io](https://nip.io/). In this case, enter your your-ip.nip.io address (e.g. 5.35.28.112.nip.io). diff --git a/docs/installation/components/python-pipeline.md b/docs/installation/components/python-pipeline.md index 18dc6563..f33965ef 100644 --- a/docs/installation/components/python-pipeline.md +++ b/docs/installation/components/python-pipeline.md @@ -52,7 +52,7 @@ sed -i "s/COMPOSE_FILE='\(.*\)'/COMPOSE_FILE='\1,python-pipeline.yml'/" /opt/sea When manually adding `python-pipeline.yml` to the `COMPOSE_FILE` variable using your preferred text editor, make sure that you do not enter a space (:material-keyboard-space:). After the modification, your `COMPOSE_FILE` variable should look like this: ```bash - COMPOSE_FILE='caddy.yml,seatable-server.yml,python-pipeline.yml' + COMPOSE_FILE='caddy.yml,seatable-server.yml,dtable-server.yml,automation-worker.yml,python-pipeline.yml' ``` #### Generate a shared secret for secure communication diff --git a/docs/installation/components/uptime-kuma.md b/docs/installation/components/uptime-kuma.md index 7761fe77..78dbd31b 100644 --- a/docs/installation/components/uptime-kuma.md +++ b/docs/installation/components/uptime-kuma.md @@ -19,7 +19,7 @@ nano /opt/seatable-compose/.env Your COMPOSE_FILE variable should look something like this: ```bash -COMPOSE_FILE='seatable-docker-proxy.yml,seatable-server.yml,uptime-kuma.yml' +COMPOSE_FILE='caddy.yml,seatable-server.yml,dtable-server.yml,automation-worker.yml,uptime-kuma.yml' ``` ### Update the compose project diff --git a/docs/installation/deployment-approach.md b/docs/installation/deployment-approach.md index 77f975b2..f4cc6613 100644 --- a/docs/installation/deployment-approach.md +++ b/docs/installation/deployment-approach.md @@ -34,7 +34,7 @@ You can configure components in the `.env` file, determining which ones to insta Example in the `.env` file: ```bash -COMPOSE_FILE='caddy.yml,seatable-server.yml' +COMPOSE_FILE='caddy.yml,seatable-server.yml,dtable-server.yml,automation-worker.yml' ``` By adding or removing yml files from this list, you control the composition during runtime, eliminating the need for a single, extensive `docker-compose.yml` file. From 63b26d01da1b097ba0a7874c2133d0b26b54500e Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Tue, 22 Sep 2026 14:20:35 +0200 Subject: [PATCH 06/10] Fix architecture diagram --- docs/introduction/architecture.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/introduction/architecture.md b/docs/introduction/architecture.md index e855176d..caa23ccf 100644 --- a/docs/introduction/architecture.md +++ b/docs/introduction/architecture.md @@ -113,7 +113,6 @@ flowchart LR subgraph s[SeaTable Server Container] A[nginx
80] B[dtable-web
8000] - C[dtable-server
5000] D[dtable-db
7777] E[api-gateway
7780] F[dtable-storage-server
6666] @@ -122,13 +121,9 @@ flowchart LR A<-- / -->B A<-- /api-gateway -->E A<-- /seafhttp -->H - B<-->C B<-->D B<-->F - E<-->C E<-->D - C<-->F - C<-->G D<-->F D<-->G end From 39dd554432801f06be58337292d947c43938d100 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Tue, 22 Sep 2026 14:26:57 +0200 Subject: [PATCH 07/10] Add upgrade notice for v7.0 --- docs/upgrade/extra-upgrade-notice.md | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/docs/upgrade/extra-upgrade-notice.md b/docs/upgrade/extra-upgrade-notice.md index ef5ba444..171ad8d1 100644 --- a/docs/upgrade/extra-upgrade-notice.md +++ b/docs/upgrade/extra-upgrade-notice.md @@ -4,6 +4,44 @@ description: Version-specific upgrade notices and required configuration changes # Extra upgrade notice +## 7.0 + +Version v7.0 splits two components out of the `seatable-server` container into **dedicated containers**. +Both of them are required, so you have to add `dtable-server.yml` and `automation-worker.yml` to the `COMPOSE_FILE` variable inside your `/opt/seatable-compose/.env` file before starting the upgraded instance: + +```bash +COMPOSE_FILE='caddy.yml,seatable-server.yml,dtable-server.yml,automation-worker.yml' +``` + +??? warning "dtable-server now runs in its own container" + + Up to v6.2, `dtable-server` was one of the services inside the `seatable-server` container. + Starting with v7.0, it runs in a dedicated container and must be activated by adding `dtable-server.yml` to the `COMPOSE_FILE` variable. + + Please also note that customizations of `dtable-server` (e.g. environment variables such as `BASE_MAX_ROWS_LIMIT`) now belong to the `dtable-server` service instead of the `seatable-server` service. + If you use a `custom-seatable-server.yml` file, move these settings to a `custom-dtable-server.yml` file and add it to the `COMPOSE_FILE` variable. + + Please refer to the [configuration of dtable-server](../configuration/components/dtable-server.md) for more information. + +??? warning "Automation rules require the new automation-worker container" + + Automation rules are no longer executed inside the `seatable-server` container. + The new `automation-worker` container is a dedicated component that reads pending automation tasks from Redis, runs the configured actions and publishes the results back to Redis. + + Add `automation-worker.yml` to the `COMPOSE_FILE` variable to activate it. + + Please refer to [this page](../introduction/architecture.md#container-automation-worker) for more information. + +??? warning "Ping endpoints of `dtable-db` and `dtable-server` are no longer exposed" + + The `/dtable-server/ping/` and `/dtable-db/ping/` endpoints are not proxied by NGINX anymore and now return a 404 error. + If you monitor these URLs from outside, remove them from your monitoring configuration. + +??? info "MariaDB starts with an increased `max-allowed-packet`" + + MariaDB is now started with `--max-allowed-packet=32M`, which mitigates issues with very large operations (e.g. importing large tables from XLSX files). + This is part of `seatable-server.yml` and applied automatically. No action is required on your side. + ## 6.2 Version v6.2 requires various configuration updates. From e550620cf7e1083280f71a9d7d83581657acb142 Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Tue, 29 Sep 2026 17:32:40 +0200 Subject: [PATCH 08/10] Update FAQ section on dtable-server --- docs/installation/faq.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/docs/installation/faq.md b/docs/installation/faq.md index 95757ed9..88851d9f 100644 --- a/docs/installation/faq.md +++ b/docs/installation/faq.md @@ -60,11 +60,19 @@ description: Troubleshooting tips for common SeaTable Server issues including st ??? question "Check dtable-server" - You can check the status of `dtable-server` by executing the following curl request: + You can check the status of `dtable-server` by executing the following command: - ```bash - curl https://$SEATABLE_SERVER_HOSTNAME/dtable-server/ping/ - ``` + === "Version 6.2 and earlier" + + ```bash + curl https://$SEATABLE_SERVER_HOSTNAME/dtable-server/ping/ + ``` + + === "Version 7.0 and later" + + ```bash + docker exec -it dtable-server curl http://127.0.0.1:5000/ping/ + ``` If `dtable-server` does not reply, it might be stuck in a reboot loop. This can happen if too many large bases are loaded at once or too many pending operations need to be replayed. @@ -73,7 +81,7 @@ description: Troubleshooting tips for common SeaTable Server issues including st As a workaround, you can increase the timeout for the healthcheck request to give `dtable-server` more time to load bases and apply pending operations. This can be achieved by increasing the value of the `DTABLE_SERVER_PING_TIMEOUT` environment variable (the default is `20`). - **Note:** This variable is not part of the default `seatable-server.yml` file, so you need to include an additional `.yml` file in order to configure this variable. + **Note:** This variable is not part of the default `seatable-server.yml` (v6.2 and earlier)/`dtable-server.yml` (v7.0 and later) file, so you need to include an additional `.yml` file in order to configure this variable. ??? question "Check nginx" From aca3d4ac8f42f3b62ead1b94eb67f2cc35284bdd Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Tue, 6 Oct 2026 11:37:50 +0200 Subject: [PATCH 09/10] Add notice re: S3 configuration for dtable-server and automation-worker --- docs/installation/advanced/s3.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/installation/advanced/s3.md b/docs/installation/advanced/s3.md index 76406dbf..39baea41 100644 --- a/docs/installation/advanced/s3.md +++ b/docs/installation/advanced/s3.md @@ -103,6 +103,10 @@ Using environment variables has numerous advantages: To enable S3 storage for base snapshots, files, pictures and avatars, add `seatable-s3.yml` to the `COMPOSE_FILE` variable inside your `.env` file. This instructs Docker-Compose to extend the definition of the `seatable-server` service defined inside `seatable-server.yml`. +!!! info "S3 configuration for `dtable-server` and `automation-worker` (v7.0+)" + + Starting from version 7.0, `seatable-s3.yml` also passes the required S3 environment variables to the `dtable-server` and `automation-worker` containers, not only to `seatable-server`. + No additional configuration is required. Afterwards, you must configure a few environment variables inside your `.env` file. The following table contains examples for the most common object storage providers: From 8a2de2def0e1ec0a04660a351184606379022f5f Mon Sep 17 00:00:00 2001 From: Simon Hammes Date: Tue, 27 Oct 2026 12:30:04 +0100 Subject: [PATCH 10/10] Document reasoning_effort --- docs/installation/components/seatable-ai.md | 23 +++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/installation/components/seatable-ai.md b/docs/installation/components/seatable-ai.md index 026bf2b1..f37ce2e5 100644 --- a/docs/installation/components/seatable-ai.md +++ b/docs/installation/components/seatable-ai.md @@ -259,6 +259,29 @@ seatable-ai: `tier` supports the following values: `low`, `medium` and `high` +##### Reasoning Effort + + + +Since version 7.0, SeaTable AI allows you to configure the `reasoning_effort` for each LLM provider. +This setting controls how much "thinking" a reasoning model performs before generating its response. Lower values result in faster responses and lower costs, while higher values can improve the results for more complex tasks. + +Simply add `reasoning_effort` to the corresponding entry under `global.LLM_MODELS` within `seatable_config.yaml`: + +```yaml +global: + LLM_MODELS: + - type: openai + key: + model: + reasoning_effort: low +``` + +!!! info "Supported values for `reasoning_effort`" + + The value is passed to the LLM provider through [LiteLLM](https://docs.litellm.ai/docs/reasoning_content). Commonly supported values are `low`, `medium` and `high`. + Please note that the setting only has an effect on models that support reasoning. Refer to your provider's documentation for the values supported by your model. + ### LLM Timeout Configuration (Optional)