diff --git a/server/agent/agent.go b/server/agent/agent.go
index ed4706d..eca7b62 100644
--- a/server/agent/agent.go
+++ b/server/agent/agent.go
@@ -264,6 +264,7 @@
 
 	// Get tasks assigned to this agent
 	taskList, err := a.Config.TaskManager.GetTasksByOwner(ctx, a.Config.Name, 0, 10)
+	a.logger.Info("Total number of Tasks", slog.String("agent", a.Config.Name), slog.Any("tasks", taskList.TotalCount))
 	if err != nil {
 		return fmt.Errorf("failed to get tasks: %w", err)
 	}
@@ -277,6 +278,8 @@
 		}
 	}
 
+	a.logger.Info("Task to process", slog.Any("task", taskToProcess))
+
 	if taskToProcess == nil {
 		// No tasks to process, wait a bit
 		time.Sleep(60 * time.Second)
diff --git a/server/git/git.go b/server/git/git.go
index 9aa1ae2..7e7ba44 100644
--- a/server/git/git.go
+++ b/server/git/git.go
@@ -377,6 +377,7 @@
 func (g *Git) Add(ctx context.Context, paths []string) error {
 	args := append([]string{"add"}, paths...)
 	cmd := exec.CommandContext(ctx, "git", args...)
+	g.logger.Info("Adding files", slog.String("paths", strings.Join(paths, ", ")))
 	cmd.Dir = g.repoPath
 	return g.runCommand(cmd, "add")
 }
diff --git a/server/tm/git_tm/git_task_manager.go b/server/tm/git_tm/git_task_manager.go
index 6a8735e..5c43828 100644
--- a/server/tm/git_tm/git_task_manager.go
+++ b/server/tm/git_tm/git_task_manager.go
@@ -29,7 +29,7 @@
 	return &GitTaskManager{
 		git:      git,
 		repoPath: repoPath,
-		tasksDir: filepath.Join(repoPath, "tasks"),
+		tasksDir: repoPath,
 		logger:   logger,
 	}
 }
@@ -42,7 +42,7 @@
 	return &GitTaskManager{
 		git:      git,
 		repoPath: repoPath,
-		tasksDir: filepath.Join(repoPath, "tasks"),
+		tasksDir: repoPath,
 		logger:   logger,
 	}
 }
@@ -229,17 +229,21 @@
 }
 
 // commitTaskChange commits a task change to git
-func (gtm *GitTaskManager) commitTaskChange(taskID, operation string) error {
+func (gtm *GitTaskManager) commitTaskChange(taskID, operation string, owner tm.Owner) error {
 	ctx := context.Background()
 
 	// Add the task file
-	if err := gtm.git.Add(ctx, []string{filepath.Join("tasks", taskID+".md")}); err != nil {
+	if err := gtm.git.Add(ctx, []string{filepath.Join(gtm.tasksDir, taskID+".md")}); err != nil {
 		return fmt.Errorf("failed to add task file: %w", err)
 	}
 
 	// Commit the change
 	message := fmt.Sprintf("task: %s - %s", taskID, operation)
-	if err := gtm.git.Commit(ctx, message, git.CommitOptions{}); err != nil {
+	if err := gtm.git.Commit(ctx, message, git.CommitOptions{
+		Author: &git.Author{
+			Name: owner.Name,
+		},
+	}); err != nil {
 		return fmt.Errorf("failed to commit task change: %w", err)
 	}
 
@@ -286,7 +290,7 @@
 	}
 
 	// Commit to git
-	if err := gtm.commitTaskChange(taskID, "created"); err != nil {
+	if err := gtm.commitTaskChange(taskID, "created", task.Owner); err != nil {
 		return nil, err
 	}
 
@@ -363,7 +367,7 @@
 	}
 
 	// Commit to git
-	if err := gtm.commitTaskChange(id, "updated"); err != nil {
+	if err := gtm.commitTaskChange(id, "updated", task.Owner); err != nil {
 		return nil, err
 	}
 
diff --git a/server/tm/git_tm/git_task_manager_test.go b/server/tm/git_tm/git_task_manager_test.go
index f7da286..033e11c 100644
--- a/server/tm/git_tm/git_task_manager_test.go
+++ b/server/tm/git_tm/git_task_manager_test.go
@@ -339,7 +339,7 @@
 	require.NoError(t, err)
 
 	// Test successful commit
-	err = gtm.commitTaskChange("test-task-123", "created")
+	err = gtm.commitTaskChange("test-task-123", "created", task.Owner)
 	assert.NoError(t, err)
 
 	// Verify commit was created
@@ -497,7 +497,7 @@
 	require.NoError(t, err)
 
 	// Commit the initial task
-	err = gtm.commitTaskChange(originalTask.ID, "created")
+	err = gtm.commitTaskChange(originalTask.ID, "created", originalTask.Owner)
 	require.NoError(t, err)
 
 	// Update the task
