Project-based workspaces. This section applies if your workspace organizes traces by tracing project. To check, look at the control at the top left. In a project-based workspace, it shows the LangSmith logo, and the sidebar has an Application section with an application picker. If the control shows your workspace name instead, your workspace is agent-based, which is in beta. Skip this section and read Agents.
- Set the destination project statically
- Set the destination project dynamically
- Set the destination workspace dynamically
Set the destination project statically
LangSmith uses the concept of a project to group traces. If left unspecified, the project is set todefault.
You can set the LANGSMITH_PROJECT environment variable to configure a custom project name for an entire application run. Set this before running your application:
Set the destination project dynamically
You can also set the project name at program runtime in various ways, depending on how you are annotating your code for tracing. This is useful when you want to log traces to different projects within the same application:- Pass the project name at decoration or configuration time.
- Override it per individual call.
- Set it when constructing a run directly.
Setting the project name dynamically using one of the following methods overrides the project name set by the
LANGSMITH_PROJECT environment variable.Set the destination workspace dynamically
If you need to route traces dynamically to different LangSmith workspaces based on runtime configuration (e.g., routing different users or tenants to separate workspaces), the approach differs by language:- Python: use workspace-specific LangSmith clients with
tracing_context. - TypeScript: pass a custom client to
traceable, or useLangChainTracerwith callbacks.
@traceable.
Prerequisites
- A LangSmith API key with access to multiple workspaces.
- The workspace IDs for each target workspace.
Generic cross-workspace tracing
Use this approach for general applications where you want to dynamically route traces to different workspaces based on runtime logic (e.g., customer ID, tenant, or environment). Key components:- Initialize separate
Clientinstances for each workspace with their respectiveworkspace_id. - Use
tracing_context(Python) or pass the workspace-specificclienttotraceable(TypeScript) to route traces. - Pass workspace configuration through your application’s runtime config.
- Override both the workspace and project name per route to organize traces further within each workspace.
Override default workspace for LangSmith deployments
When deploying agents to LangSmith, you can override the default workspace that traces are sent to by using a graph lifespan context manager. This is useful when you want to route traces from a deployed agent to different workspaces based on runtime configuration passed through theconfig parameter.
When deploying with cross-workspace tracing, ensure your service key or PAT has the necessary permissions for all target workspaces. We recommend using a multi-workspace service key for production deployments. For LangSmith deployments, you must add a service key with cross-workspace access to your environment variables (e.g.,
LS_CROSS_WORKSPACE_KEY) to override the default service key generated by your deployment.Connect these docs to your agent of choice via MCP for real-time answers.

