Quick-start templates for building agentic applications with the GitHub Copilot SDK.
Path: typescript-quickstart/
Full-featured TypeScript template with:
- Interactive CLI interface
- Example custom tools (calculator, time)
- Streaming responses
- Hot reload support
- ESLint & Prettier configuration
Get Started:
cd typescript-quickstart
npm install
npm startPath: python-quickstart/
Python template with async/await support:
- Interactive CLI interface
- Example custom tools (calculator, time)
- Streaming responses
- Type hints
- Virtual environment ready
Get Started:
cd python-quickstart
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python src/main.py# Copy TypeScript template
cp -r templates/typescript-quickstart my-agentic-app
cd my-agentic-app
# Or Python template
cp -r templates/python-quickstart my-agentic-app
cd my-agentic-appCopy the environment template:
cp ../templates/.env.example .envEdit .env and configure your settings.
TypeScript:
npm installPython:
python -m venv venv
source venv/bin/activate
pip install -r requirements.txtTypeScript:
npm startPython:
python src/main.pyAll templates include:
- ✅ Pre-configured SDK setup - Ready to use
- ✅ Example custom tools - Learn by example
- ✅ Interactive CLI - Test your agents
- ✅ Streaming support - Real-time responses
- ✅ Environment variables - Easy configuration
- ✅ Documentation - Get started quickly
All templates use the same .env.example file located in templates/.env.example.
Key settings:
COPILOT_MODEL=gpt-4.1 # AI model to use
COPILOT_STREAMING=true # Enable streaming
LOG_LEVEL=info # Logging verbositySee .env.example for all options.
import { defineTool } from "@github/copilot-sdk";
const myTool = defineTool("my_tool", {
description: "What your tool does",
parameters: {
type: "object",
properties: {
input: { type: "string", description: "Input parameter" },
},
required: ["input"],
},
handler: async (args) => {
// Your logic here
return { result: args.input.toUpperCase() };
},
});from copilot.tools import define_tool
@define_tool(description="What your tool does")
async def my_tool(params: dict) -> dict:
"""Tool documentation"""
# Your logic here
return {"result": params["input"].upper()}After using a template:
- Customize the tools - Add your own business logic
- Connect to MCP servers - Integrate external services
- Add error handling - Make it production-ready
- Deploy - Share your agentic app
Have an idea for a new template? Open a PR or issue!
Requirements for new templates:
- Clear README with setup instructions
- Example custom tools
- Environment variable support
- Proper error handling
- .gitignore file