# Setup guides These guides walk you through configuring the Copilot SDK for your specific use case—from personal side projects to production platforms serving thousands of users. ## Architecture at a glance Every Copilot SDK integration follows the same core pattern: your application talks to the SDK, which communicates with the Copilot CLI over JSON-RPC. What changes across setups is **where the CLI runs**, **how users authenticate**, and **how sessions are managed**. ```mermaid flowchart TB subgraph YourApp["Your Application"] SDK["SDK Client"] end subgraph CLI["Copilot CLI"] direction TB RPC["JSON-RPC Server"] Auth["Authentication"] Sessions["Session Manager"] Models["Model Provider"] end SDK -- "JSON-RPC
(stdio or TCP)" --> RPC RPC --> Auth RPC --> Sessions Auth --> Models style YourApp fill:#0d1117,stroke:#58a6ff,color:#c9d1d9 style CLI fill:#161b22,stroke:#3fb950,color:#c9d1d9 ``` The setup guides below help you configure each layer for your scenario. ## Who are you? ### 🧑‍💻 Hobbyist You're building a personal assistant, side project, or experimental app. You want the simplest path to getting Copilot in your code. **Start with:** 1. **[Default Setup](./bundled-cli.md)**—The SDK includes the CLI automatically—just install and go 1. **[Local CLI](./local-cli.md)**—Use your own CLI binary or running instance (advanced) ### 🏢 Internal app developer You're building tools for your team or company. Users are employees who need to authenticate with their enterprise GitHub accounts or org memberships. **Start with:** 1. **[GitHub OAuth](./github-oauth.md)**—Let employees sign in with their GitHub accounts 1. **[Backend Services](./backend-services.md)**—Run the SDK in your internal services **If scaling beyond a single server:** 1. **[Multi-tenancy and server deployments](./multi-tenancy.md)**—Configure SDK options for multi-user server mode 1. **[Scaling & Multi-Tenancy](./scaling.md)**—Handle multiple users and services ### 🚀 App developer (ISV) You're building a product for customers. You need to handle authentication for your users—either through GitHub or by managing identity yourself. **Start with:** 1. **[GitHub OAuth](./github-oauth.md)**—Let customers sign in with GitHub 1. **[BYOK](../auth/byok.md)**—Manage identity yourself with your own model keys 1. **[Backend Services](./backend-services.md)**—Power your product from server-side code **For production:** 1. **[Multi-tenancy and server deployments](./multi-tenancy.md)**—Use `mode: "empty"`, per-session tokens, and isolated runtime state 1. **[Scaling & Multi-Tenancy](./scaling.md)**—Serve many customers reliably ### 🏗️ Platform developer You're embedding Copilot into a platform—APIs, developer tools, or infrastructure that other developers build on. You need fine-grained control over sessions, scaling, and multi-tenancy. **Start with:** 1. **[Backend Services](./backend-services.md)**—Core server-side integration 1. **[Multi-tenancy and server deployments](./multi-tenancy.md)**—SDK-level isolation, per-session auth, and shared runtime options 1. **[Scaling & Multi-Tenancy](./scaling.md)**—Session isolation, horizontal scaling, persistence **Depending on your auth model:** 1. **[GitHub OAuth](./github-oauth.md)**—For GitHub-authenticated users 1. **[BYOK](../auth/byok.md)**—For self-managed identity and model access ## Decision matrix Use this table to find the right guides based on what you need to do: | What you need | Guide | |---------------|-------| | Getting started quickly | [Default Setup (Bundled CLI)](./bundled-cli.md) | | Use your own CLI binary or server | [Local CLI](./local-cli.md) | | Users sign in with GitHub | [GitHub OAuth](./github-oauth.md) | | Use your own model keys (OpenAI, Azure, etc.) | [BYOK](../auth/byok.md) | | Azure BYOK with Managed Identity (no API keys) | [Azure Managed Identity](./azure-managed-identity.md) | | Run the SDK on a server | [Backend Services](./backend-services.md) | | Configure SDK options for concurrent users | [Multi-tenancy and server deployments](./multi-tenancy.md) | | Serve multiple users / scale horizontally | [Scaling & Multi-Tenancy](./scaling.md) | ## Configuration comparison ```mermaid flowchart LR subgraph Auth["Authentication"] A1["Signed-in CLI
(local)"] A2["GitHub OAuth
(multi-user)"] A3["Env Vars / Tokens
(server)"] A4["BYOK
(your keys)"] end subgraph Deploy["Deployment"] D1["Local Process
(auto-managed)"] D2["Bundled Binary
(shipped with app)"] D3["External Server
(headless CLI)"] end subgraph Scale["Scaling"] S1["Single User
(one CLI)"] S2["Multi-User
(shared CLI)"] S3["Isolated
(CLI per user)"] end A1 --> D1 --> S1 A2 --> D3 --> S2 A3 --> D3 --> S2 A4 --> D2 --> S1 A2 --> D3 --> S3 A3 --> D3 --> S3 style Auth fill:#0d1117,stroke:#58a6ff,color:#c9d1d9 style Deploy fill:#0d1117,stroke:#3fb950,color:#c9d1d9 style Scale fill:#0d1117,stroke:#f0883e,color:#c9d1d9 ``` ## Prerequisites All guides assume you have: * **One of the SDKs** installed (Node.js, Python, and .NET SDKs include the CLI automatically): * Node.js: `npm install @github/copilot-sdk` * Python: `pip install github-copilot-sdk` * Go: `go get github.com/github/copilot-sdk/go` (requires separate CLI installation) * .NET: `dotnet add package GitHub.Copilot.SDK` If you're brand new, start with the **[Getting Started tutorial](../getting-started.md)** first, then come back here for production configuration. ## Next steps Pick the guide that matches your situation from the [decision matrix](#decision-matrix) above, or start with the persona description closest to your role.