{"meta":{"title":"Standardsetup (gebündelte CLI)","intro":"Die Node.js und .NET SDKs enthalten die Copilot CLI als Abhängigkeit – Ihre App enthält alles, was sie benötigt, ohne zusätzliche Installation oder Konfiguration erforderlich.","product":"GitHub Copilot","breadcrumbs":[{"href":"/de/copilot","title":"GitHub Copilot"},{"href":"/de/copilot/how-tos","title":"Vorgehensweisen"},{"href":"/de/copilot/how-tos/copilot-sdk","title":"Copilot SDK"},{"href":"/de/copilot/how-tos/copilot-sdk/setup","title":"Einrichten des Copilot SDK"},{"href":"/de/copilot/how-tos/copilot-sdk/setup/bundled-cli","title":"Gebündelte CLI"}],"documentType":"article"},"body":"# Standardsetup (gebündelte CLI)\n\nDie Node.js und .NET SDKs enthalten die Copilot CLI als Abhängigkeit – Ihre App enthält alles, was sie benötigt, ohne zusätzliche Installation oder Konfiguration erforderlich.\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\nDas Python SDK empfiehlt nach der Installation einen einmaligen Downloadschritt:\n\n```bash\npython -m copilot download-runtime\n```\n\nDadurch wird die passende Laufzeit heruntergeladen und lokal zwischengespeichert. Wenn Sie diesen Schritt überspringen, versucht das SDK, es automatisch bei der ersten Verwendung als Fallback herunterzuladen.\n\n**Am besten geeignet für:** Die meisten Anwendungen – Desktop-Apps, eigenständige Tools, CLI-Dienstprogramme, Prototypen und vieles mehr.\n\n## So funktioniert es\n\nWenn Sie das SDK installieren, ist die Copilot-Laufzeit automatisch enthalten (Node.js, .NET) oder wird über `python -m copilot download-runtime` heruntergeladen (Python). Das SDK startet ihn als untergeordneten Prozess und kommuniziert über stdio. Es gibt nichts Zusätzliches zu konfigurieren.\n\n![Diagramm: Flussdiagramm mit dem beschriebenen Prozess.](/assets/images/help/copilot/copilot-sdk/setup-bundled-cli-diagram-0.png)\n\n**Wichtige Merkmale:**\n\n* CLI-Binärdatei ist im SDK enthalten – keine separate Installation erforderlich\n* Das SDK verwaltet die CLI-Version, um die Kompatibilität sicherzustellen.\n* Benutzer authentifizieren sich über Ihre App (oder verwenden Sie env vars / BYOK)\n* Sitzungen werden pro Benutzer auf ihrem Computer verwaltet.\n\n## Schnellstart\n\n<div class=\"ghd-codetabs\">\n<div class=\"ghd-codetab\" data-lang=\"typescript\" data-label=\"TypeScript\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">TypeScript</div>\n\n```typescript\nimport { CopilotClient } from \"@github/copilot-sdk\";\n\nconst client = new CopilotClient();\n\nconst session = await client.createSession({ model: \"gpt-5.4\" });\nconst response = await session.sendAndWait({ prompt: \"Hello!\" });\nconsole.log(response?.data.content);\n\nawait client.stop();\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"python\" data-label=\"Python\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Python</div>\n\n```python\nfrom copilot import CopilotClient\nfrom copilot.session import PermissionHandler\n\nclient = CopilotClient()\nawait client.start()\n\nsession = await client.create_session(on_permission_request=PermissionHandler.approve_all, model=\"gpt-5.4\")\nresponse = await session.send_and_wait(\"Hello!\")\nprint(response.data.content)\n\nawait client.stop()\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"go\" data-label=\"Go\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Go</div>\n\n> \\[!NOTE]\n> Im Gegensatz zu Node.js, Python und .NET enthält das Go SDK keine CLI als automatische Abhängigkeit. Wenn kein expliziter Pfad angegeben ist, verwendet `NewClient(nil)` eine eingebettete CLI, wenn verfügbar, und greift andernfalls auf `copilot` unter `PATH` zurück. Um eine CLI einzubetten, führen Sie das [Bundler-Tool](https://github.com/github/copilot-sdk/tree/main/go/README.md#distributing-your-application-with-an-embedded-github-copilot-cli) zur Buildzeit aus. Sie können auch `Connection` festlegen oder ein `COPILOT_CLI_PATH` auf eine vorhandene Binärdatei verweisen lassen. Einzelheiten findest du unter [Lokale CLI-Einrichtung](/de/copilot/how-tos/copilot-sdk/setup/local-cli).\n\n```golang\nclient := copilot.NewClient(nil)\nif err := client.Start(ctx); err != nil {\n    log.Fatal(err)\n}\ndefer client.Stop()\n\nsession, _ := client.CreateSession(ctx, &copilot.SessionConfig{Model: \"gpt-5.4\"})\nresponse, _ := session.SendAndWait(ctx, copilot.MessageOptions{Prompt: \"Hello!\"})\nif d, ok := response.Data.(*copilot.AssistantMessageData); ok {\n    fmt.Println(d.Content)\n}\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"dotnet\" data-label=\".NET\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">.NET</div>\n\n```csharp\nawait using var client = new CopilotClient();\nawait using var session = await client.CreateSessionAsync(\n    new SessionConfig { Model = \"gpt-5.4\" });\n\nvar response = await session.SendAndWaitAsync(\n    new MessageOptions { Prompt = \"Hello!\" });\nConsole.WriteLine(response?.Data.Content);\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"java\" data-label=\"Java\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Java</div>\n\n> \\[!NOTE]\n> Das Java SDK bündelt oder bettet die Copilot CLI nicht ein. Installieren Sie die CLI separat und machen Sie `copilot` entweder in Ihrem `PATH` verfügbar oder legen Sie seinen Speicherort mit `setCliPath(...)` fest (oder verbinden Sie sich mit einem laufenden CLI-Server über `setCliUrl(...)`).\n\n```java\nimport com.github.copilot.CopilotClient;\nimport com.github.copilot.rpc.*;\n\nvar client = new CopilotClient(new CopilotClientOptions()\n    // Point to the CLI binary installed on the system\n    .setCliPath(\"/path/to/vendor/copilot\")\n);\nclient.start().get();\n\nvar session = client.createSession(new SessionConfig()\n    .setModel(\"gpt-5.4\")\n    .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)\n).get();\n\nvar response = session.sendAndWait(new MessageOptions()\n    .setPrompt(\"Hello!\")).get();\nSystem.out.println(response.getData().content());\n\nclient.stop().get();\n```\n\n</div>\n\n</div>\n\n## Authentifizierungsstrategien\n\nSie müssen entscheiden, wie Sich Ihre Benutzer authentifizieren. Hier sind die allgemeinen Muster:\n\n![Diagramm: Flussdiagramm mit dem beschriebenen Prozess.](/assets/images/help/copilot/copilot-sdk/setup-bundled-cli-diagram-1.png)\n\n### Option A: Anmeldeinformationen des Benutzers (am einfachsten)\n\nDer Benutzer meldet sich einmal bei der CLI an, und Ihre App verwendet diese Anmeldeinformationen. Kein zusätzlicher Code erforderlich – dies ist das Standardverhalten.\n\n```typescript\nconst client = new CopilotClient();\n// Default: uses signed-in user credentials\n```\n\n### Option B: Token über Umgebungsvariable\n\nSenden Sie Ihre App mit Anweisungen zum Festlegen eines Tokens, oder legen Sie sie programmgesteuert fest:\n\n```typescript\nconst client = new CopilotClient({\n    env: {\n        COPILOT_GITHUB_TOKEN: getUserToken(),  // Your app provides the token\n    },\n});\n```\n\n### Option C: BYOK (keine GitHub Authentifizierung erforderlich)\n\nWenn Sie Ihre eigenen Modellanbieterschlüssel verwalten, benötigen Benutzer überhaupt keine GitHub Konten:\n\n```typescript\nconst client = new CopilotClient();\n\nconst session = await client.createSession({\n    model: \"gpt-5.4\",\n    provider: {\n        type: \"openai\",\n        baseUrl: \"https://api.openai.com/v1\",\n        apiKey: process.env.OPENAI_API_KEY,\n    },\n});\n```\n\nAusführliche Informationen finden Sie im **[Bring Your Own Key (BYOK)](/de/copilot/how-tos/copilot-sdk/auth/byok)** .\n\n## Sitzungsverwaltung\n\nApps möchten in der Regel benannte Sitzungen, damit Benutzer Unterhaltungen fortsetzen können:\n\n```typescript\nconst client = new CopilotClient();\n\n// Create a session tied to the user's project\nconst sessionId = `project-${projectName}`;\nconst session = await client.createSession({\n    sessionId,\n    model: \"gpt-5.4\",\n});\n\n// User closes app...\n// Later, resume where they left off\nconst resumed = await client.resumeSession(sessionId);\n```\n\nDer Sitzungszustand bleibt bei `~/.copilot/session-state/{sessionId}/`.\n\n## Wann muss ich fortfahren?\n\n| Bedarf                                                                                      | Nächster Leitfaden |\n| ------------------------------------------------------------------------------------------- | ------------------ |\n| Benutzer, die sich mit GitHub-Konten anmelden                                               |                    |\n| [Einrichtung von GitHub OAuth](/de/copilot/how-tos/copilot-sdk/setup/github-oauth)          |                    |\n| Auf einem Server anstelle von Benutzercomputern ausführen                                   |                    |\n| [Einrichtung von Back-End-Diensten](/de/copilot/how-tos/copilot-sdk/setup/backend-services) |                    |\n| Verwenden Sie Ihre eigenen Modellschlüssel                                                  |                    |\n| [Bring Your Own Key (BYOK)](/de/copilot/how-tos/copilot-sdk/auth/byok)                      |                    |\n\n## Nächste Schritte\n\n* **[Bring Your Own Key (BYOK)](/de/copilot/how-tos/copilot-sdk/auth/byok)**: Eigene Schlüssel des Modellanbieters verwenden\n* **[Wiederaufnahme und Persistenz der Sitzung](/de/copilot/how-tos/copilot-sdk/features/session-persistence)**: Erweiterte Sitzungsverwaltung\n* **[Erstellen Sie Ihre erste Copilot-gestützte App](/de/copilot/how-tos/copilot-sdk/getting-started)**: Erstellen einer vollständigen App"}