Skip to content

Commit 3d2bdd4

Browse files
authored
Merge branch 'main' into docs/superlinked-sie
2 parents 7842331 + 1efbf28 commit 3d2bdd4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+852
-412
lines changed

.github/workflows/pr-welcome-comment.yml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,18 @@ jobs:
104104
105105
// --- Group by product, merging owners across files ---
106106
const productOwners = new Map();
107+
let authorIsOwner = false;
107108
for (const file of files) {
108109
const owners = findOwners(file.filename);
110+
const ownerNames = owners.map(o => o.replace(/^@/, ''));
111+
112+
if (ownerNames.some(o => o.toLowerCase() === author.toLowerCase())) {
113+
authorIsOwner = true;
114+
}
115+
109116
const product = getProductName(file.filename);
110117
if (!product || owners.length === 0) continue;
111118
112-
const ownerNames = owners.map(o => o.replace(/^@/, ''));
113-
114119
// Skip areas where the author is already an owner
115120
if (ownerNames.some(o => o.toLowerCase() === author.toLowerCase())) continue;
116121
@@ -123,7 +128,8 @@ jobs:
123128
}
124129
125130
if (productOwners.size === 0) {
126-
if (author.toLowerCase() === 'lnhsingh') return;
131+
// Skip fallback if author owns any of the changed files
132+
if (authorIsOwner || author.toLowerCase() === 'lnhsingh') return;
127133
productOwners.set('General changes', new Set(['lnhsingh']));
128134
}
129135

src/code-samples/deepagents/content-builder.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ def load_subagents(config_path: Path) -> list:
140140
def create_content_writer():
141141
"""Create a content writer agent configured by filesystem files."""
142142
return create_deep_agent(
143-
model="openai:gpt-5.4",
143+
model="anthropic:claude-sonnet-4-6",
144144
memory=["./AGENTS.md"],
145145
skills=["./skills/"],
146146
tools=[generate_cover, generate_social_image],

src/docs.json

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -734,8 +734,8 @@
734734
"group": "Deployment guides",
735735
"pages": [
736736
"langsmith/deploy-to-cloud",
737-
"langsmith/deploy-with-control-plane",
738737
"langsmith/deploy-standalone-server",
738+
"langsmith/deploy-with-control-plane",
739739
"langsmith/diagnostics-self-hosted"
740740
]
741741
},
@@ -963,7 +963,7 @@
963963
{
964964
"group": "Configure",
965965
"pages": [
966-
"langsmith/fleet/setup",
966+
"langsmith/fleet/workspace-admin",
967967
"langsmith/fleet/agent-identity",
968968
"langsmith/fleet/manage-agent-settings"
969969
]
@@ -978,7 +978,8 @@
978978
"langsmith/fleet/slack-app",
979979
"langsmith/fleet/teams-app",
980980
"langsmith/fleet/remote-mcp-servers",
981-
"langsmith/fleet/arcade"
981+
"langsmith/fleet/arcade",
982+
"langsmith/fleet/salesforce"
982983
]
983984
},
984985
{
@@ -2036,7 +2037,7 @@
20362037
},
20372038
{
20382039
"source": "/langsmith/agent-builder-setup",
2039-
"destination": "/langsmith/fleet/setup"
2040+
"destination": "/langsmith/fleet/workspace-admin"
20402041
},
20412042
{
20422043
"source": "/langsmith/agent-builder-manage-agent-settings",
@@ -2681,6 +2682,14 @@
26812682
{
26822683
"source": "/oss/python/langchain/frontend/integrations",
26832684
"destination": "/oss/python/langchain/frontend/integrations/overview"
2685+
},
2686+
{
2687+
"source": "/langsmith/fleet/setup",
2688+
"destination": "/langsmith/fleet/workspace-admin"
2689+
},
2690+
{
2691+
"source": "/langsmith/fleet/workspace-settings",
2692+
"destination": "/langsmith/fleet/workspace-admin"
26842693
}
26852694
]
26862695
}

src/langsmith/abac.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ Each condition group specifies:
104104
| `prompt` | `prompts:read`, `prompts:update`, `prompts:delete`, `prompts:share`, `prompts:tag` |
105105
| `dataset` | `datasets:read`, `datasets:update`, `datasets:delete`, `datasets:share` |
106106
| `deployment` | `deployments:read`, `deployments:update`, `deployments:delete` |
107+
| `mcp_server` | `mcp-servers:read`, `mcp-servers:invoke`, `mcp-servers:update`, `mcp-servers:delete`. See [Fleet tool access control](/langsmith/fleet/access-and-oversight#tool-access-control). |
108+
| `fleet_integration` | `mcp-servers:read`, `mcp-servers:invoke`. See [Fleet tool access control](/langsmith/fleet/access-and-oversight#tool-access-control). |
107109

108110
<Note>
109111
Runs don't have their own tags. Run permissions (`runs:read`, `runs:create`, `runs:share`, `runs:delete`) are evaluated against the parent project's tags.

src/langsmith/configure-input-output-preview.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ alt="Runs table showing the Format button at the top to configure input and outp
3535

3636
When you select a trace name, LangSmith loads a successful trace example and renders its structure as an expandable tree. Each node in the tree represents a field in your data, showing:
3737

38-
- Field names (e.g., messages, output, metadata).
38+
- Field names (e.g., `messages` for LLM conversation history, `output`, `metadata`).
3939
- Array indices (e.g., [0], [1], [-1] for last item).
4040
- Item counts for arrays (e.g., (3) indicating 3 items).
4141
- Preview values for strings and numbers displayed inline.
@@ -99,6 +99,8 @@ For example, your trace input is this:
9999
}
100100
```
101101

102+
In this example, `messages` is an array of message objects, each with a `role` (such as `system` or `user`) and a `content` field.
103+
102104
To display the user's question:
103105

104106
1. Expand the **messages** node (shows array items).

src/langsmith/deploy-standalone-server.mdx

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,10 @@ icon: "server"
55
description: Deploy standalone Agent Servers using Docker, Docker Compose, or Kubernetes without the LangSmith control plane.
66
---
77

8-
This guide shows you how to deploy **standalone <Tooltip tip="The server that runs your LangGraph applications.">Agent Servers</Tooltip>** without the LangSmith UI or control plane. This is the most lightweight self-hosting option for running one or a few agents as independent services.
9-
10-
<Warning>
11-
This deployment option provides flexibility but requires you to manage your own infrastructure and configuration.
12-
13-
For production workloads, consider [self-hosting the full LangSmith platform](/langsmith/self-hosted) or [deploying with the control plane](/langsmith/deploy-with-control-plane), which offer standardized deployment patterns and UI-based management.
14-
</Warning>
8+
This guide shows you how to deploy **standalone <Tooltip tip="The server that runs your LangGraph applications.">Agent Servers</Tooltip>** directly, without using the [LangSmith control plane](/langsmith/deploy-with-control-plane). You can deploy the server independently and still use LangSmith separately for tracing and evaluation. Standalone servers are production-ready and provide the most lightweight self-hosting option for running agents.
159

1610
<Note>
17-
**This is the setup page for deploying Agent Servers directly without the LangSmith platform.**
18-
19-
Review the [self-hosted options](/langsmith/self-hosted) to understand:
20-
- [Standalone Server](/langsmith/self-hosted#standalone-server): What this guide covers (no UI, just servers).
21-
- [LangSmith](/langsmith/self-hosted#langsmith): For the full LangSmith platform with UI.
22-
- [LangSmith Deployment](/langsmith/self-hosted#enable-langsmith-deployment): For UI-based deployment management.
23-
24-
Before continuing, review the [standalone server overview](/langsmith/self-hosted#standalone-server).
11+
For an overview of self-hosted deployment options, see [self-hosted options](/langsmith/self-hosted).
2512
</Note>
2613

2714
## Prerequisites
@@ -54,12 +41,14 @@ Before continuing, review the [standalone server overview](/langsmith/self-hoste
5441
<a id="helm"></a>
5542
## Kubernetes
5643

57-
Use this [Helm chart](https://github.com/langchain-ai/helm/blob/main/charts/langgraph-cloud/README.md) to deploy an Agent Server to a Kubernetes cluster.
44+
Use this [Helm chart](https://github.com/langchain-ai/helm/blob/main/charts/langgraph-cloud/README.md) to deploy an Agent Server to a Kubernetes cluster. This is the recommended setup for production standalone server deployments.
5845

5946
The Helm chart (v0.2.6+) supports MongoDB checkpointing with a bundled instance (dev/testing) or an external deployment (production). Set `mongo.enabled: true` in your values file. See [Configure checkpointer backend](/langsmith/configure-checkpointer#deploy-by-environment) for full configuration details.
6047

6148
## Docker
6249

50+
This `docker` example is intended for local development and testing.
51+
6352
Run the following `docker` command:
6453

6554
```shell
@@ -82,7 +71,9 @@ and you should provide appropriate values for `REDIS_URI`, `DATABASE_URI`, and `
8271

8372
## Docker Compose
8473

85-
Docker Compose YAML file:
74+
This Docker Compose example is intended for local development and testing.
75+
76+
Use the following Docker Compose file:
8677

8778
```yml
8879
volumes:

src/langsmith/fleet/access-and-oversight.mdx

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,101 @@ This is configurable per agent, so you can choose the right model for each use c
3030

3131
For setup instructions, see [Agent identity](/langsmith/fleet/agent-identity).
3232

33+
## Tool access control
34+
35+
Fleet provides layered access control for tools, covering both **custom MCP servers** (user-added, workspace-scoped) and **built-in integrations** (platform-provided, such as Gmail, Slack, and GitHub):
36+
37+
- **[Role-based access control (RBAC)](#rbac-role-based-permissions)**: Controls access at the role level.
38+
- **[Attribute-based access control (ABAC)](#attribute-based-access-control)**: Adds per-resource granularity on top of RBAC.
39+
- **[Workspace integration policy](#workspace-integration-policy)**: Provides an admin-controlled enable/disable gate for built-in integrations.
40+
41+
<Note>
42+
Tool access control is an Enterprise feature. If you are interested in this feature, [contact our sales team](https://www.langchain.com/contact-sales).
43+
</Note>
44+
45+
### Role-based permissions
46+
47+
Role-based access control (RBAC) grants or denies access to all MCP servers and integrations in a workspace based on a user's role. Configure roles in **Settings > Roles**.
48+
49+
The following permissions are available for MCP servers and integrations:
50+
51+
| Permission | Description |
52+
|------------|-------------|
53+
| `mcp-servers:read` | Discover and list MCP servers and integrations |
54+
| `mcp-servers:invoke` | Execute tools from MCP servers and integrations, including OAuth connect/disconnect |
55+
| `mcp-servers:create` | Create new MCP server configurations |
56+
| `mcp-servers:update` | Modify MCP server configurations |
57+
| `mcp-servers:delete` | Remove MCP server configurations |
58+
59+
<Note>
60+
A role with `mcp-servers:read` and `mcp-servers:invoke` can see and use all MCP servers and integrations in the workspace.
61+
</Note>
62+
63+
For more on RBAC, see [Role-based access control](/langsmith/rbac).
64+
65+
#### Create a role with tool permissions
66+
67+
<Steps>
68+
<Step title="Open role settings">
69+
Navigate to **Settings > Roles** and click **Create role**.
70+
</Step>
71+
<Step title="Configure MCP Servers permissions">
72+
Expand the **MCP Servers** section and select the permissions to include. For example, grant `Read` and `Invoke` for users who need to use tools but not manage server configurations.
73+
</Step>
74+
<Step title="Assign the role">
75+
Assign the role to users in the workspace in **Settings > Members**.
76+
</Step>
77+
</Steps>
78+
79+
### Attribute-based access control
80+
81+
Attribute-based access control (ABAC) adds resource-level granularity on top of RBAC. Admins can tag individual MCP servers or integrations and create policies that grant or restrict access based on those tags.
82+
83+
ABAC operates on two resource types for tools:
84+
85+
| Resource type | Applies to |
86+
|---------------|-----------|
87+
| `mcp_server` | Custom MCP servers added to the workspace |
88+
| `fleet_integration` | Built-in integrations (Gmail, Slack, GitHub, etc.) |
89+
90+
<Note>
91+
A role with no `mcp-servers:*` RBAC permissions can still be granted access to specific tagged resources (e.g. only Notion and Gmail) via an ABAC allow policy. Conversely, a role with broad RBAC access can be restricted from specific resources via an ABAC deny policy.
92+
</Note>
93+
94+
For details on policy structure, operators, and managing policies via the API, see [Attribute-based access control](/langsmith/abac).
95+
96+
### Workspace integration policy
97+
98+
Built-in integrations have an additional control layer: a workspace-level enable/disable toggle managed from **Settings > Integrations > Access control**. This acts as an admin-controlled baseline that runs before per-user RBAC and ABAC.
99+
100+
If an integration is disabled at the workspace level, no user can access it regardless of their role or ABAC policies.
101+
102+
<Note>
103+
The Access control page is only visible to admin users (requires `workspaces:manage` permission).
104+
</Note>
105+
106+
### Policy evaluation order
107+
108+
The three layers evaluate in sequence. The evaluation order differs slightly between custom MCP servers and built-in integrations:
109+
110+
**Custom MCP servers:**
111+
112+
```
113+
ABAC deny → RBAC → ABAC allow
114+
```
115+
116+
**Built-in integrations:**
117+
118+
```
119+
Workspace policy gate → ABAC deny → RBAC → ABAC allow
120+
```
121+
122+
At each step:
123+
1. **Workspace policy gate** (integrations only): If the integration is disabled, access is denied. No further evaluation.
124+
2. **ABAC deny**: If a deny policy matches, access is denied. Deny always wins.
125+
3. **RBAC**: If the user's role grants the required permission, access is allowed (unless step 4 is needed).
126+
4. **ABAC allow**: If RBAC does not grant access, an allow policy can still grant it for specific tagged resources.
127+
33128
## Observability and audit trail
34129

35130
Agent actions in Fleet are captured in a structured [LangSmith trace](/langsmith/observability), including tool calls, decisions, and outputs. You can inspect, search, and export traces.

src/langsmith/fleet/agent-identity.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Agent identity
33
description: Choose whether your Fleet agent authenticates with its own credentials or with each user's credentials.
44
---
55

6-
Agent identity controls whose [credentials](/langsmith/fleet/setup) the agent uses when it interacts with apps and services.
6+
Agent identity controls whose [credentials](/langsmith/fleet/workspace-admin) the agent uses when it interacts with apps and services.
77

88
<Warning>
99
Once an agent identity is set, it cannot be changed.

src/langsmith/fleet/essentials.mdx

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ LangSmith Fleet essentials are the core features that make up the foundation of
77

88
## Agent identity
99

10-
Agent identity controls whose [credentials](/langsmith/fleet/setup) the agent uses when it interacts with apps and services.
10+
Agent identity controls whose [credentials](/langsmith/fleet/workspace-admin) the agent uses when it interacts with apps and services.
1111

1212
See [Agent identity](/langsmith/fleet/agent-identity) for more information.
1313

@@ -91,19 +91,26 @@ To edit instructions:
9191
You can also update instructions by prompting the agent directly in the chat. For example: "Update your instructions to always respond in bullet points."
9292
</Tip>
9393

94-
## Memory and updates
94+
## Memory
9595

96-
Agents remember important information from previous conversations and can update themselves to work better.
96+
Agents remember important information from previous conversations and can update themselves to work better. Fleet agents use two sources of memory:
9797

98-
- **Memory**: Agents persist relevant details from past interactions by writing files to a **memories folder** (using `write_file` and `edit_file` tool calls). This lets them make better decisions in future conversations.
99-
- **Self-updates**: Agents can add new tools, remove ones they don't need, or adjust their instructions to improve how they work.
100-
- **What stays the same**: Agents can't change their name, description, or the channels that start them.
98+
- **Thread-scoped memory**: Context from the current conversation thread, including messages and actions in that thread.
99+
- **Long-term memory**: Persistent files in the agent workspace, such as `AGENTS.md`, `tools.json` (tool configuration), `subagents/*`, and `skills/*`. These are loaded at runtime and available from the start of each run. `AGENTS.md` is inserted into the system prompt automatically. Other long-term files are not added to the prompt automatically; the agent must read them on demand (for example, using the `read_file` tool).
100+
101+
Agents persist relevant details from past interactions by writing files to a **memories folder** (using `write_file` and `edit_file` tool calls). This helps them make better decisions in future conversations.
101102

102103
<Note>
103-
By default, agents require approval before saving to the memories folder. You can disable this in the agent's settings. For agents that run on automated schedules (such as [schedules](/langsmith/fleet/schedules#add-a-schedule)), disable the approval requirement so the agent can persist information without manual intervention. See [Update memory](/langsmith/fleet/manage-agent-settings#update-memory) for instructions.
104+
By default, agents require approval before saving to the memories folder. You can disable this in the agent's settings.
105+
106+
For agents that run on automated [schedules](/langsmith/fleet/schedules#add-a-schedule), we recommend [disabling the approval requirement](/langsmith/fleet/manage-agent-settings#disable-required-approval-for-memory-updates) so the agent can persist information without manual intervention.
104107
</Note>
105108

106-
For more information, see [How we built Agent Builder's memory system](https://www.langchain.com/conceptual-guides/how-we-built-agent-builders-memory).
109+
For more information, see [How we built the memory system for Fleet (formerly known as Agent Builder)](https://www.langchain.com/conceptual-guides/how-we-built-agent-builders-memory).
110+
111+
## Self-updates
112+
113+
Agents can update themselves: they can add new tools, remove ones they don't need, or adjust their instructions. However, agents can't change their name, description, or the channels that start them.
107114

108115
## Skills
109116

@@ -173,7 +180,7 @@ Fleet traces all agent runs and stores them in LangSmith. LLM providers do not r
173180

174181
## Next steps
175182

176-
- [Set up your workspace](/langsmith/fleet/setup)
183+
- [Set up your workspace](/langsmith/fleet/workspace-admin)
177184
- [Connect apps and services](/langsmith/fleet/tools)
178185
- [Use remote servers for tools](/langsmith/fleet/remote-mcp-servers)
179186
- [Choose between workspace and private agents](/langsmith/fleet/manage-agent-settings)

src/langsmith/fleet/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Disclaimers:
6868

6969
- [Essentials: connections, automation, memory, approvals](/langsmith/fleet/essentials)
7070
- [Create from a template](/langsmith/fleet/templates)
71-
- [Set up your workspace](/langsmith/fleet/setup)
71+
- [Set up your workspace](/langsmith/fleet/workspace-admin)
7272
- [Connect apps and services](/langsmith/fleet/tools) and [use remote connections](/langsmith/fleet/mcp-framework)
7373
- [Choose between workspace and private agents](/langsmith/fleet/manage-agent-settings)
7474
- [Authorize accounts when prompted](/langsmith/fleet/auth-format)

0 commit comments

Comments
 (0)