Skip to content

feat: headless Slack workflow runner via Cursor ACP #48

@m2ux

Description

@m2ux

Problem Statement

The current workflow execution model requires one Cursor IDE window per active workflow. The IDE window, git working tree, and agent context are all shared within a single session, creating a serialization bottleneck: only one workflow can run at a time. To run a second workflow concurrently, the user must open a separate IDE window, manually configure it, and manage coordination between sessions.

This coupling between the workflow execution engine and the IDE presentation layer also limits where and how workflows can be triggered — only from a developer's desktop, only when the IDE is open, and only with direct visual attention on the session.

Current state:

  • One workflow execution per IDE window
  • Parallel workflows require manual setup of multiple IDE windows
  • Workflow checkpoints (user decisions) require IDE interaction
  • No way to trigger or monitor workflows from mobile or non-desktop contexts

Desired state:

  • Multiple workflows execute concurrently, each in an isolated environment
  • Workflows can be triggered and monitored from Slack (desktop and mobile)
  • Workflow checkpoints are presented as interactive Slack messages
  • No IDE window required for workflow execution

Goal

Enable parallel, headless workflow execution driven from Slack, removing the requirement for a dedicated IDE window per workflow run.

Scope

In Scope

  • Headless agent runtime for workflow execution without an IDE window
  • Slack-based trigger mechanism for starting workflows
  • Checkpoint interaction via Slack interactive messages (buttons, selects)
  • Filesystem isolation between concurrent workflow runs
  • Progress streaming to Slack threads
  • Graceful lifecycle management (startup, shutdown, cleanup)

Out of Scope

  • Persistent state storage (in-memory sufficient for initial release)
  • Error recovery and automatic agent restart
  • Alternative agent runtimes (e.g., Claude Code)
  • Multi-repository base configurations
  • Rate limiting and concurrent session caps
  • Observability infrastructure (structured logging, metrics dashboards)

User Stories

US-1: Trigger Workflow from Slack

As a developer, I want to start a workflow execution from a Slack slash command so that I don't need to open an IDE window or be at my desktop.

Acceptance Criteria:

  • A Slack command initiates a workflow run with specified parameters
  • The workflow executes to completion without IDE interaction
  • Progress updates appear in a dedicated Slack thread

US-2: Parallel Workflow Execution

As a developer, I want to run multiple workflows concurrently so that different work packages can progress in parallel without blocking each other.

Acceptance Criteria:

  • Multiple workflow runs execute simultaneously without interference
  • Each run operates on an isolated copy of the repository
  • Runs targeting different components do not conflict

US-3: Checkpoint Interaction via Slack

As a developer, I want to respond to workflow checkpoints through Slack interactive messages so that I can guide execution from anywhere, including mobile.

Acceptance Criteria:

  • Workflow checkpoints appear as Slack messages with interactive buttons
  • Clicking a button resumes the workflow with the selected option
  • The checkpoint message updates to reflect the chosen response

US-4: Workflow Monitoring

As a developer, I want to see workflow progress streamed to a Slack thread so that I can monitor execution status without switching context.

Acceptance Criteria:

  • Agent activity streams to the workflow's Slack thread
  • Workflow completion or failure is clearly indicated
  • Resources are cleaned up after workflow completion

Context

A proof-of-concept implementation exists on branch feat/headless-slack-runner (commit 6c054ff). The PoC covers the core module structure and unit tests (19 tests passing). Live validation against a real Slack workspace and Cursor ACP runtime is pending.

Constraints

  • Runtime dependency: Requires Cursor CLI (agent binary) on the execution host
  • Slack App setup: Requires a configured Slack App with Bot Token, App-Level Token, slash command, and interactivity enabled
  • Network: Slack Socket Mode (outbound WebSocket only — no public URL or ingress required)

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions