diff --git a/server/agent/manager.go b/server/agent/manager.go
index 88bfe21..c206665 100644
--- a/server/agent/manager.go
+++ b/server/agent/manager.go
@@ -41,15 +41,38 @@
 	// Create auto-assigner
 	autoAssigner := assignment.NewAutoAssigner(cfg.Agents)
 
-	// Create GitHub PR provider
-	githubConfig := git.GitHubConfig{
-		Token:  cfg.GitHub.Token,
-		Logger: logger,
+	// Create PR provider based on configuration
+	var prProvider git.PullRequestProvider
+	var repoURL string
+	
+	switch cfg.GetPrimaryGitProvider() {
+	case "github":
+		githubConfig := git.GitHubConfig{
+			Token:  cfg.GitHub.Token,
+			Logger: logger,
+		}
+		prProvider = git.NewGitHubPullRequestProvider(cfg.GitHub.Owner, cfg.GitHub.Repo, githubConfig)
+		repoURL = fmt.Sprintf("https://github.com/%s/%s.git", cfg.GitHub.Owner, cfg.GitHub.Repo)
+		logger.Info("Using GitHub as pull request provider", 
+			slog.String("owner", cfg.GitHub.Owner), 
+			slog.String("repo", cfg.GitHub.Repo))
+	case "gerrit":
+		gerritConfig := git.GerritConfig{
+			Username: cfg.Gerrit.Username,
+			Password: cfg.Gerrit.Password,
+			BaseURL:  cfg.Gerrit.BaseURL,
+			Logger:   logger,
+		}
+		prProvider = git.NewGerritPullRequestProvider(cfg.Gerrit.Project, gerritConfig)
+		repoURL = fmt.Sprintf("%s/%s", cfg.Gerrit.BaseURL, cfg.Gerrit.Project)
+		logger.Info("Using Gerrit as pull request provider", 
+			slog.String("base_url", cfg.Gerrit.BaseURL), 
+			slog.String("project", cfg.Gerrit.Project))
+	default:
+		return nil, fmt.Errorf("no valid Git provider configured")
 	}
-	prProvider := git.NewGitHubPullRequestProvider(cfg.GitHub.Owner, cfg.GitHub.Repo, githubConfig)
 
-	// Create clone manager for per-agent Git repositories
-	repoURL := fmt.Sprintf("https://github.com/%s/%s.git", cfg.GitHub.Owner, cfg.GitHub.Repo)
+	// Create clone manager for per-agent Git repositories  
 	workspacePath := filepath.Join(".", "workspace")
 	cloneManager := git.NewCloneManager(repoURL, workspacePath)
 
@@ -109,13 +132,24 @@
 		break
 	}
 
+	// Get owner and repo for subtask service based on provider
+	var owner, repo string
+	switch m.config.GetPrimaryGitProvider() {
+	case "github":
+		owner = m.config.GitHub.Owner
+		repo = m.config.GitHub.Repo
+	case "gerrit":
+		owner = m.config.Gerrit.Project
+		repo = m.config.Gerrit.Project
+	}
+	
 	m.subtaskService = subtasks.NewSubtaskService(
 		firstAgent.Provider,
 		m.taskManager,
 		agentRoles,
 		m.prProvider,
-		m.config.GitHub.Owner,
-		m.config.GitHub.Repo,
+		owner,
+		repo,
 		m.cloneManager,
 		m.logger,
 	)
@@ -569,7 +603,15 @@
 		return "", fmt.Errorf("failed to create PR: %w", err)
 	}
 
-	return fmt.Sprintf("https://github.com/%s/%s/pull/%d", m.config.GitHub.Owner, m.config.GitHub.Repo, pr.Number), nil
+	// Generate provider-specific PR URL
+	switch m.config.GetPrimaryGitProvider() {
+	case "github":
+		return fmt.Sprintf("https://github.com/%s/%s/pull/%d", m.config.GitHub.Owner, m.config.GitHub.Repo, pr.Number), nil
+	case "gerrit":
+		return fmt.Sprintf("%s/c/%s/+/%d", m.config.Gerrit.BaseURL, m.config.Gerrit.Project, pr.Number), nil
+	default:
+		return "", fmt.Errorf("unknown git provider")
+	}
 }
 
 // buildPRDescription creates PR description from template
