Co-Scientist
Co-Scientist requires Seqera Platform Enterprise 25.3.6 or later. This guide covers the Enterprise 26.1 deployment path for the agent backend, MCP server, web interface, and Seqera CLI. It is currently only available on AWS.
Deploy the agent backend, Seqera MCP server, and web interface alongside Platform to provide Co-Scientist assistance for workflows, data, projects, and Platform resources in the Seqera CLI and browser. The MCP, agent backend, and portal web Helm charts provide the option to define Kubernetes ingresses. Other methods to expose the services can be used, e.g. via the extraDeploy resource.
Prerequisites
Before you begin, make sure you have:
- Seqera Platform Enterprise 25.3.6 or later deployed with the Seqera Platform Helm chart.
- Helm v3 and
kubectlinstalled locally. - DNS names and TLS certificates for the Platform, agent backend, MCP server, and portal web interface hosts. By default, the Helm charts derive
mcp.<platformExternalDomain>,ai-api.<platformExternalDomain>, andai.<platformExternalDomain>. Overrideglobal.mcpDomain,global.agentBackendDomain, andglobal.portalWebDomainif you use different hostnames. - Access to pull the images required by the Helm charts from the configured container registry, or mirrored copies in your internal registry. See Seqera container images and Mirroring container images.
- A MySQL 8.4 LTS-compatible database for the agent backend. You can use the same MySQL instance as Platform with a separate database and user, or a separate instance.
- A Redis 7.2-compatible or Valkey 7.2-compatible instance for agent backend task coordination.
- A stable Fernet token encryption key for the agent backend if you use Kustomize. Helm-only installs can let the chart generate this key, but explicitly setting it avoids accidental regeneration.
- Access to a supported Claude inference provider. AWS Bedrock is recommended for Enterprise deployments; direct Anthropic API access is also supported.
- If you use AWS Bedrock, access to the required Claude model or inference profile and the Amazon Titan embedding model. See AWS documentation to add or remove access to Amazon Bedrock foundation models.
- If you use direct Anthropic API access, an Anthropic API key stored in a Kubernetes Secret.
Generate a Fernet token encryption key when you set the key manually:
# using uv Python package manager (installed if not available)
uv --version >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh
uv run --with cryptography python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
# using Python directly, cryptography dependency module must be installed in environment
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
Store database passwords, Redis or Valkey passwords, OIDC token values, image pull credentials, and encryption keys in Kubernetes Secrets. Reference those Secrets from Helm values instead of committing plaintext values.
Inference providers
Co-Scientist supports two Claude inference providers. AWS Bedrock is recommended for Enterprise deployments, especially when inference must run in your AWS account or your organization wants to avoid direct egress to Anthropic. Direct Anthropic API access remains supported when your organization has approved that integration.
| Inference provider | Description |
|---|---|
| AWS Bedrock | Recommended. Runs Claude inference in your AWS account through Bedrock. |
| Anthropic API | Uses Anthropic-hosted Claude models through an Anthropic API key. |
Documentation semantic search is configured separately from chat inference. Use Amazon Titan embeddings through Bedrock when you enable improved documentation search.
Components
| Component | Description |
|---|---|
| Agent backend | FastAPI and LangGraph service that orchestrates Co-Scientist sessions, validates Platform tokens, calls the configured inference provider, connects to MCP, and streams Server-Sent Events (SSE) to clients. |
| Seqera MCP server | Model Context Protocol server that exposes Platform-aware tools for workflows, datasets, compute environments, Wave, Hub, and nf-core. |
| Portal web interface | Browser interface for Co-Scientist chat, projects, thread history, report viewing, and related Platform workflows. |
| MySQL | Agent backend database for sessions, threads, token usage records, and conversation history. |
| Redis or Valkey | Agent backend queue and coordination store. |
Deployment topology
The recommended Enterprise topology is using the platform Seqera Helm chart with the mcp, agent-backend, and portal-web subcharts enabled. The Platform Helm chart automatically wires the MCP OIDC client registration token from the Platform backend secret, reducing the number of manual steps required.
Use separate Helm releases when you cannot convert your existing Platform installation to using the Helm chart or your environment requires separate lifecycle ownership. If you deploy the charts separately, you must manually configure:
global.platformServiceAddressandglobal.platformServicePorton each AI chart so they can reach the Platform backend service using the cluster-internal endpoint.oidcToken.existingSecretNameandoidcToken.existingSecretKeywith the same OIDC client registration token configured for the Platform backend.- Matching external DNS and TLS for
global.mcpDomain,global.agentBackendDomain, andglobal.portalWebDomain.
Configure Helm values
Enable the three Co-Scientist subcharts in your Platform values file. This example uses the Platform parent chart, so the same Helm release also deploys or upgrades Platform. Include the required Platform values from your existing installation in addition to these Co-Scientist values.
global:
platformExternalDomain: platform.example.com
mcpDomain: mcp.platform.example.com
agentBackendDomain: ai-api.platform.example.com
portalWebDomain: ai.platform.example.com
mcp:
enabled: true
agent-backend:
enabled: true
portal-web:
enabled: true
For a complete example, see the Co-Scientist Helm example.
Configure MCP
When MCP runs under the Platform parent chart, leave mcp.oidcToken unset unless you need to override the default wiring. The parent chart sets it to the Platform backend secret key OIDC_CLIENT_REGISTRATION_TOKEN.
Configure the agent backend
The agent backend needs MySQL, Redis or Valkey, inference provider access, MCP connectivity, and a stable token encryption key. In this example sensitive values (db and redis passwords, token encryption key, etc) are stored in a Kubernetes secret named seqera-ai-secrets, which needs to already exist before the chart installation, either created manually or with automated secret extraction tools (like External Secrets, not covered in this tutorial).
Declare which provider serves each capability using inference.provider, embeddings.provider, and sandbox.provider. inference.provider is required; embeddings.provider and sandbox.provider are optional. Leave them empty to disable those features. The bedrock block holds credentials and configuration shared across all Bedrock-backed services, with per-service overrides available when needed.
The following example shows a full Bedrock configuration with embeddings and AgentCore sandbox enabled. For Anthropic inference, see the note after the example.
agent-backend:
enabled: true
# -- Database
database:
host: mysql.example.com
name: agent_backend
username: agent_backend
existingSecretName: seqera-ai-secrets
existingSecretKey: AGENT_BACKEND_DB_PASSWORD
# -- Redis or Valkey
redis:
host: redis.example.com
db: 0
existingSecretName: seqera-ai-secrets
existingSecretKey: AGENT_BACKEND_REDIS_PASSWORD
tokenEncryptionKeyExistingSecretName: seqera-ai-secrets
# -- Provider routing: declare which provider serves each capability
inference:
provider: bedrock # required; "bedrock" or "anthropic"
embeddings:
provider: bedrock # optional; omit to disable documentation search
sandbox:
provider: bedrock # optional; omit to disable AgentCore sandbox sessions
# -- Bedrock configuration
bedrock:
# Default credentials applied to all Bedrock-backed services unless overridden per-service.
# Use this when inference, embeddings, and sandbox all share the same role and region.
default:
assumeRoleArn: arn:aws:iam::<account-id>:role/<bedrock-access-role>
region: <region>
inference:
# Anthropic inference profile ARN on Bedrock.
anthropicModel: arn:aws:bedrock:<region>:<account-id>:inference-profile/<profile-name>
embeddings:
model: amazon.titan-embed-text-v2:0
sandbox:
# AgentCore runtime ARN — required when sandbox.provider is "bedrock".
runtimeArn: arn:aws:bedrock-agentcore:<region>:<account-id>:runtime/<runtime-id>
Use bedrock.default.assumeRoleArn when the pod must assume a role to access Bedrock services. Leave it empty when the pod already has direct AWS credentials for the target account. Per-service overrides (bedrock.inference.assumeRoleArn, bedrock.embeddings.assumeRoleArn, bedrock.sandbox.assumeRoleArn) are available when different roles are required per capability.
To use direct Anthropic API access instead of Bedrock for inference, replace the inference and bedrock.inference blocks above with the following, and add the anthropic block. Bedrock embeddings can still be enabled alongside Anthropic inference:
inference:
provider: anthropic
anthropic:
existingSecretName: seqera-ai-secrets
embeddings:
provider: bedrock
bedrock:
default:
assumeRoleArn: arn:aws:iam::<account-id>:role/<bedrock-access-role>
region: <region>
embeddings:
model: amazon.titan-embed-text-v2:0
Use direct Anthropic API access only when your organization has approved Anthropic-hosted Claude models.
Configure the portal web interface
The portal web chart serves the browser interface and proxies requests to the agent backend. It authenticates users through Seqera Platform.
portal-web:
enabled: true
Install or upgrade
Run Helm with your Platform values and Co-Scientist overrides:
helm upgrade --install seqera oci://public.cr.seqera.io/charts/platform \
--namespace seqera \
--values values.yaml
After installation, verify the pods are ready:
kubectl get pods -n seqera -l app.kubernetes.io/component=mcp
kubectl get pods -n seqera -l app.kubernetes.io/component=agent-backend
kubectl get pods -n seqera -l app.kubernetes.io/component=portal-web
Verify the installation
Check the public endpoints:
curl -i https://ai-api.platform.example.com/health
curl -i https://mcp.platform.example.com/health
curl -i https://mcp.platform.example.com/service-info
curl -I https://ai.platform.example.com
The agent backend /health endpoint returns 200 OK when the service starts and required dependencies are reachable. The MCP server exposes /health for reachability and /service-info for server and protocol information. The portal web interface does not expose a matching /service-info endpoint; use the HTTP response and browser sign-in test to confirm it is reachable.
Open the portal web interface, for example https://ai.platform.example.com, and sign in with your Platform account. A successful login confirms that Platform OIDC, portal web, and the agent backend are connected. Start a chat in the interface to test the inference provider configuration; if sandboxing was configured, try asking a specific question that would trigger a sandbox execution, e.g. What's the accurate square root of 98723516236?, which should prompt the model to write a small Python script that should run in the sandbox.
Connect the Seqera CLI to Co-Scientist
There are two options available to install Seqera CLI:
Use the install endpoint
Once Platform is installed with agent-backend and portal-web enabled, use the install endpoint to install CLI:
curl -fsSL https://<global.portalWebDomain>/install | bash
curl -fsSL https://ai.platform.example.com/install | bash
For automated environments, use a Platform access token instead of browser login.
export TOWER_ACCESS_TOKEN=<PLATFORM_ACCESS_TOKEN>
seqera ai
Set SEQERA_AUTH_CLI_CLIENT_ID only for OAuth deployments that use a non-default CLI client ID. SEQERA_ACCESS_TOKEN and TOWER_ACCESS_TOKEN are supported for token-based authentication.
Use the official npm package
Install the CLI from the official seqera npm package:
npm install -g seqera
Point the CLI at your Enterprise deployment:
export SEQERA_AUTH_DOMAIN=https://platform.example.com/api
export SEQERA_AI_BACKEND_URL=https://ai-api.platform.example.com
seqera ai
Set SEQERA_AUTH_CLI_CLIENT_ID only if your deployment uses a CLI OAuth client ID other than the default seqera_ai_cli.
For automated environments, use a Platform access token instead of browser login. Current CLI builds still require SEQERA_AUTH_DOMAIN so the CLI can target the correct Enterprise Platform authority.
export SEQERA_AUTH_DOMAIN=https://platform.example.com/api
export TOWER_ACCESS_TOKEN=<PLATFORM_ACCESS_TOKEN>
export SEQERA_AI_BACKEND_URL=https://ai-api.platform.example.com
seqera ai
Set SEQERA_AUTH_CLI_CLIENT_ID only for OAuth deployments that use a non-default CLI client ID. SEQERA_ACCESS_TOKEN and TOWER_ACCESS_TOKEN are supported for token-based authentication.
Usage and cost
Usage and inference costs are managed by your organization through the configured inference provider, such as AWS Bedrock or Anthropic API.
Security considerations
- Use HTTPS for every exposed hostname.
- Store all sensitive values in Kubernetes Secrets.
- Keep the agent backend Fernet token encryption key stable across upgrades. Changing it prevents the backend from decrypting existing encrypted values.
- For user-scoped operations, MCP uses the signed-in user's Platform token to call Platform APIs. Do not configure a shared administrator token for these calls.
- Use a separate MySQL database and user for the agent backend, even if they are hosted on the same MySQL instance as Platform.
- Enable Redis or Valkey TLS and MySQL TLS when your managed services require encrypted connections.
Learn more
- Co-Scientist in the Seqera CLI: Co-Scientist documentation.
- Co-Scientist Helm example: Example Platform values for the Co-Scientist subcharts.
- Agent backend chart: Full agent backend values reference.
- MCP chart: Full MCP values reference.
- Portal web chart: Full portal web values reference.