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 The
shouldertap.yaml that was just written and add an expert under the experts: section: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:
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.