Skip to main content
The console transport prints the DM ShoulderTap would send an expert to your terminal, and reads the reply from stdin — the same loop as real Slack, with no Slack app or credentials needed for a first look.
Prerequisites: Python 3.11 or newer. No Slack, no API keys, no LLM required — without an LLM configured, ShoulderTap passes the expert’s reply through verbatim instead of structuring it.
1

Install and initialize

Install the package and generate a starter config:
shtap init prompts for an organization name and writes shouldertap.yaml (config) and .env.example (secret placeholders) to the current directory.
2

Add an expert

Open the shouldertap.yaml that was just written and add an expert under the experts: section:
The id is a Slack user ID in production, but with the console transport any string works. The topics list is what routing matches a question’s topic against.
3

Start the engine

In your first terminal, run the server with the console transport:
This starts the engine, the HTTP API (default port 8776), and the approval UI. Leave it running — this is the terminal where the DM to Dana will appear.
4

Ask a question

In a second terminal, submit a question as a consumer:
Terminal 1 now prints the DM ShoulderTap would have sent Dana on Slack — the self-identification, why it’s asking, the question, and the opt-out. Type a reply there, for example:
Terminal 2 is now polling for an answer and will wait until a reviewer accepts it.
5

Review and accept

In a third terminal, see the pending proposal and accept it:
Terminal 2 then prints the accepted answer, attributed to Dana:
That’s the whole loop: a consumer asked, an expert answered on a transport, a human approved, and the answer came back attributed. In production you swap the console transport for Slack and point real agents at the HTTP API, MCP server, or SDK.

What’s next

Concepts

Understand requests, proposals, experts, consumers, kinds, and topics.

Configuration

Every shouldertap.yaml setting, defaults, and how secrets map to .env.

Connect Slack

Swap the console transport for a real Slack app.

Integrate an agent

Tap a human expert from your own agent via MCP, the SDK, or webhooks.