Skip to content

C# SDK

Start here

Goal Guide
Run a workflow Run your first workflow
Write a worker Write your first worker
Build an agent Run your first agent
Category Maintained upstream example
Workflow and worker Examples
Agentic workflow Not currently maintained upstream
API journey Not currently maintained upstream

The agentic-workflow row covers SDK examples that orchestrate LLMs or tools. It is separate from the SDK-authored Conductor Agent quickstart, which is available above.

Connect to Conductor

For local OSS, set CONDUCTOR_SERVER_URL=http://localhost:8080/api.

For Orkes Developer Edition, set CONDUCTOR_SERVER_URL=https://developer.orkescloud.com/api, CONDUCTOR_AUTH_KEY, and CONDUCTOR_AUTH_SECRET. Keep credentials out of source control.

C# reads CONDUCTOR_SERVER_URL when you set Configuration.BasePath; pass OrkesAuthenticationSettings explicitly for key/secret authentication.

Install the SDK

Maintenance

This SDK is part of the Conductor OSS ecosystem. Conductor OSS remains actively maintained under the Conductor OSS community, with Orkes contributing maintenance, engineering, documentation, and enterprise support.

dotnet add package conductor-csharp --version VERSION

Configure a workflow client

The SDK quickstart configures the endpoint from the environment and uses the workflow executor API:

using Conductor.Client;
using Conductor.Definition;
using Conductor.Definition.TaskType;
using Conductor.Executor;

var configuration = new Configuration {
    BasePath = Environment.GetEnvironmentVariable("CONDUCTOR_SERVER_URL")
        ?? "<YOUR-CLUSTER-URL>/api"
};

var workflow = new ConductorWorkflow()
    .WithName("greetings")
    .WithVersion(1);

var greetTask = new SimpleTask("greet", "greet_ref")
    .WithInput("name", workflow.Input("name"));
workflow.WithTask(greetTask);

var executor = new WorkflowExecutor(configuration);
executor.RegisterWorkflow(workflow, overwrite: true);
var workflowId = executor.StartWorkflow(new StartWorkflowRequest {
    Name = "greetings",
    Version = 1,
    Input = new Dictionary<string, object> { ["name"] = "Conductor" }
});

For Orkes authentication, the SDK exposes Configuration.AuthenticationSettings; create an OrkesAuthenticationSettings from CONDUCTOR_AUTH_KEY and CONDUCTOR_AUTH_SECRET before constructing clients. It does not do that environment mapping automatically. See the upstream SDK README for its authentication and worker examples.