# Agentic Table — Service overview (customer-facing)

This page describes the **Agentic Table** capability (RfpAgent module) and how it is deployed and routed in your Unique environment. It is intended for customer administrators and stakeholders, including teams that maintain Helm values and cluster networking.

## What Agentic Table does

Agentic Table supports structured analysis workflows (often used for RFP-style questionnaires and large tabular reviews). It runs as part of the Unique assistants platform and processes requests orchestrated through chat so teams can work through complex tables with AI-assisted extraction and reporting.

## What changed in release 2026.18

The Agentic Table workload now runs in its own **dedicated service** (`assistants-agentic-table`) instead of serving the same logic only through the `assistants-core` deployment. From an end-user perspective, behavior remains the same: conversations, actions, and outputs continue to work as before.

The architectural split improves:

- **Isolation** — Updates and scaling for Agentic Table are decoupled from unrelated assistant components.
- **Operational agility** — Your deployment can roll out and tune this workload independently.
- **Performance** — The standalone service uses a FastAPI-based HTTP stack (Gunicorn/Uvicorn) suited for concurrent assistant workloads.

## Routing: `INTERNAL_MODULES_CONFIG` (node-chat)

Chat routes assistant modules using the `INTERNAL_MODULES_CONFIG` environment variable on **node-chat**. This value is a JSON array of objects `{ "name": "<ModuleName>", "apiURL": "<base URL>" }`. No separate product UI toggle applies; routing is controlled by this deployment configuration.

For Agentic Table, the relevant module name is `RfpAgent`. node-chat forwards requests to the URL given in that entry’s `apiURL`.

### Integrated mode (legacy path via assistants-core)

The `RfpAgent` entry points at the `rfp_agent` HTTP route served by **assistants-core**. Example shape (Kubernetes DNS names and namespaces vary by environment):

```
{"name": "RfpAgent", "apiURL": "http://assistants-core.<namespace>.svc.cluster.local:8081/core/rfp_agent"}
```

Concrete illustration using the `chat` namespace:

```
{"name": "RfpAgent", "apiURL": "http://assistants-core.chat.svc.cluster.local:8081/core/rfp_agent"}
```

### Standalone dedicated service (recommended for new rollouts)

When the `assistants-agentic-table` Helm release is deployed, point `RfpAgent` at the standalone service base path `/agentic_table` instead of `/core/rfp_agent` on assistants-core:

```
{"name": "RfpAgent", "apiURL": "http://assistants-agentic-table.<namespace>.svc.cluster.local:8081/agentic_table"}
```

Example with `python` namespace:

```
{"name": "RfpAgent", "apiURL": "http://assistants-agentic-table.python.svc.cluster.local:8081/agentic_table"}
```

### Event payload module name (`payload.name`)

This is separate from the `INTERNAL_MODULES_CONFIG` entry name. For HTTP requests accepted by the **standalone**`assistants-agentic-table` service, `payload.name` may be `AgenticTable`, `agentic_table`, `RfpAgent`, or `rfp_agent`. If you route traffic back to `assistants-core` (`/core/rfp_agent`), `payload.name` must be `RfpAgent` for the request to pass validation there.

### Applying changes

1. Ensure the `assistants-agentic-table` workload is deployed and healthy in the target cluster when using the standalone URL.
2. Ensure required env vars for that chart are set (see **Networking** below), including `INGESTION_UPLOAD_API_URL_INTERNAL`.
3. Update `INTERNAL_MODULES_CONFIG` on node-chat (typically via Helm values for that environment).
4. **Redeploy node-chat** so pods pick up the new JSON.

## Networking

When network policies default-deny traffic (for example Cilium), plan flows involving `assistants-agentic-table`, **node-chat**, and **node-ingestion**. Ports below follow typical Unique overlays—always match your cluster Services and GitOps values.

| Direction | Purpose |
| --- | --- |
| **node-chat → assistants-agentic-table** | Module HTTP traffic from chat orchestration to the standalone Agentic Table route (`/agentic_table`). Allow ingress on the assistant Service port (commonly **8081** on the pod; Service fronting may differ). |
| **assistants-agentic-table → node-chat** | Callbacks and SDK traffic via `UNIQUE_API_BASE_URL` (must point at node-chat’s internal API base URL for the environment). |
| **assistants-agentic-table → node-ingestion** | **Scoped content uploads** driven by `INGESTION_UPLOAD_API_URL_INTERNAL`, which must reference the ingestion service’s upload endpoint (typically `node-ingestion`), e.g. `http://node-ingestion.<namespace>.svc.cluster.local:<port>/scoped/upload`. This is **mandatory** in the dedicated chart values so library/row ingestion flows can reach ingestion. |

**Helm / env:** The `assistants-agentic-table` chart expects at least `UNIQUE_API_BASE_URL` and `INGESTION_UPLOAD_API_URL_INTERNAL` in addition to standard secrets; align Service names, namespaces, and ports with your deployment.

**Policies:** If you use label-based rules, allow egress from `assistants-agentic-table` to **node-ingestion** on the ingestion Service port, and ingress on **node-ingestion** from `assistants-agentic-table`. Allow egress from `assistants-agentic-table` to **node-chat** on the API port used by `UNIQUE_API_BASE_URL`, and ingress from **node-chat** to `assistants-agentic-table` on the assistant port.

## Fallback / rollback

Rollback is a **routing change only**; persistent state remains in the platform databases accessed via the normal Unique APIs.

| Step | Action |
| --- | --- |
| 1 | In `INTERNAL_MODULES_CONFIG`, set `RfpAgent``apiURL` back to the **assistants-core** path (`.../core/rfp_agent`). |
| 2 | Redeploy **node-chat**. |
| 3 | Optionally scale down or remove the `assistants-agentic-table` release if you no longer want that workload running (traffic will not use it once node-chat points back to assistants-core). |

There is **no customer-side data migration** tied to switching between these routes.

Typical rollback time is on the order of minutes once node-chat is redeployed.

## Quality and release readiness

This service ships through the standard Unique release process and validation cycle before rollout to customer environments.

## Getting help

For product questions, rollout timing, or incidents affecting Agentic Table in your environment, use your established Unique support or Customer Success channel.
