diff --git a/server/agent/example.go b/server/agent/example.go
new file mode 100644
index 0000000..1233bdc
--- /dev/null
+++ b/server/agent/example.go
@@ -0,0 +1,196 @@
+package agent
+
+import (
+	"context"
+	"log"
+	"time"
+
+	"github.com/iomodo/staff/git"
+	"github.com/iomodo/staff/llm"
+	"github.com/iomodo/staff/tm"
+	"github.com/iomodo/staff/tm/git_tm"
+)
+
+// ExampleAgent demonstrates how to create and run an agent
+func ExampleAgent() {
+	// Create git interface for task management
+	gitInterface := git.DefaultGit("./tasks-repo")
+
+	// Create task manager
+	taskManager := git_tm.NewGitTaskManager(gitInterface, "./tasks-repo")
+
+	// Create LLM configuration
+	llmConfig := llm.Config{
+		Provider: llm.ProviderOpenAI,
+		APIKey:   "your-openai-api-key-here", // Replace with actual API key
+		BaseURL:  "https://api.openai.com/v1",
+		Timeout:  30 * time.Second,
+	}
+
+	// Create agent configuration
+	config := AgentConfig{
+		Name:        "backend-engineer-1",
+		Role:        "Backend Engineer",
+		GitUsername: "backend-agent",
+		GitEmail:    "backend-agent@company.com",
+		WorkingDir:  "./workspace",
+		LLMProvider: llm.ProviderOpenAI,
+		LLMModel:    "gpt-4",
+		LLMConfig:   llmConfig,
+		SystemPrompt: `You are a skilled backend engineer. Your role is to:
+1. Analyze tasks and provide technical solutions
+2. Write clean, maintainable code
+3. Consider performance, security, and scalability
+4. Provide clear documentation for your solutions
+5. Follow best practices and coding standards
+
+When responding to tasks, provide:
+- Detailed technical analysis
+- Code examples where appropriate
+- Implementation considerations
+- Testing recommendations
+- Documentation suggestions`,
+		TaskManager: taskManager,
+		GitRepoPath: "./code-repo",
+		GitRemote:   "origin",
+		GitBranch:   "main",
+	}
+
+	// Create agent
+	agent, err := NewAgent(config)
+	if err != nil {
+		log.Fatalf("Failed to create agent: %v", err)
+	}
+
+	// Create a sample task
+	ctx := context.Background()
+	task, err := taskManager.CreateTask(ctx, &tm.TaskCreateRequest{
+		Title:       "Implement user authentication API",
+		Description: "Create a REST API endpoint for user authentication with JWT tokens. Include login, logout, and token refresh functionality.",
+		OwnerID:     config.Name,
+		Priority:    tm.PriorityHigh,
+	})
+	if err != nil {
+		log.Fatalf("Failed to create task: %v", err)
+	}
+
+	log.Printf("Created task: %s", task.ID)
+
+	// Run the agent (this will process tasks in an infinite loop)
+	go func() {
+		if err := agent.Run(); err != nil {
+			log.Printf("Agent stopped with error: %v", err)
+		}
+	}()
+
+	// Let the agent run for a while
+	time.Sleep(5 * time.Minute)
+
+	// Stop the agent
+	agent.Stop()
+}
+
+// ExampleMultipleAgents demonstrates how to create multiple agents with different roles
+func ExampleMultipleAgents() {
+	// Create shared git interface for task management
+	gitInterface := git.DefaultGit("./tasks-repo")
+	taskManager := git_tm.NewGitTaskManager(gitInterface, "./tasks-repo")
+
+	// Create agents with different roles
+	agents := []AgentConfig{
+		{
+			Name:        "backend-engineer-1",
+			Role:        "Backend Engineer",
+			GitUsername: "backend-agent",
+			GitEmail:    "backend-agent@company.com",
+			WorkingDir:  "./workspace/backend",
+			LLMProvider: llm.ProviderOpenAI,
+			LLMModel:    "gpt-4",
+			LLMConfig: llm.Config{
+				Provider: llm.ProviderOpenAI,
+				APIKey:   "your-openai-api-key",
+				BaseURL:  "https://api.openai.com/v1",
+				Timeout:  30 * time.Second,
+			},
+			SystemPrompt: `You are a backend engineer. Focus on:
+- API design and implementation
+- Database design and optimization
+- Security best practices
+- Performance optimization
+- Code quality and testing`,
+			TaskManager: taskManager,
+			GitRepoPath: "./code-repo",
+			GitRemote:   "origin",
+			GitBranch:   "main",
+		},
+		{
+			Name:        "frontend-engineer-1",
+			Role:        "Frontend Engineer",
+			GitUsername: "frontend-agent",
+			GitEmail:    "frontend-agent@company.com",
+			WorkingDir:  "./workspace/frontend",
+			LLMProvider: llm.ProviderOpenAI,
+			LLMModel:    "gpt-4",
+			LLMConfig: llm.Config{
+				Provider: llm.ProviderOpenAI,
+				APIKey:   "your-openai-api-key",
+				BaseURL:  "https://api.openai.com/v1",
+				Timeout:  30 * time.Second,
+			},
+			SystemPrompt: `You are a frontend engineer. Focus on:
+- User interface design and implementation
+- React/Vue/Angular development
+- Responsive design and accessibility
+- Performance optimization
+- User experience best practices`,
+			TaskManager: taskManager,
+			GitRepoPath: "./code-repo",
+			GitRemote:   "origin",
+			GitBranch:   "main",
+		},
+		{
+			Name:        "product-manager-1",
+			Role:        "Product Manager",
+			GitUsername: "pm-agent",
+			GitEmail:    "pm-agent@company.com",
+			WorkingDir:  "./workspace/product",
+			LLMProvider: llm.ProviderOpenAI,
+			LLMModel:    "gpt-4",
+			LLMConfig: llm.Config{
+				Provider: llm.ProviderOpenAI,
+				APIKey:   "your-openai-api-key",
+				BaseURL:  "https://api.openai.com/v1",
+				Timeout:  30 * time.Second,
+			},
+			SystemPrompt: `You are a product manager. Focus on:
+- Product strategy and roadmap
+- User research and requirements gathering
+- Feature prioritization and planning
+- Stakeholder communication
+- Product documentation and specifications`,
+			TaskManager: taskManager,
+			GitRepoPath: "./docs-repo",
+			GitRemote:   "origin",
+			GitBranch:   "main",
+		},
+	}
+
+	// Create and start all agents
+	for _, config := range agents {
+		agent, err := NewAgent(config)
+		if err != nil {
+			log.Printf("Failed to create agent %s: %v", config.Name, err)
+			continue
+		}
+
+		go func(agent *Agent, name string) {
+			log.Printf("Starting agent: %s", name)
+			if err := agent.Run(); err != nil {
+				log.Printf("Agent %s stopped with error: %v", name, err)
+			}
+		}(agent, config.Name)
+	}
+
+	// Let agents run for a while
+	time.Sleep(10 * time.Minute)
+}
