Human in the Loop Deployment Gates
Tests passed. That does not mean it should ship without someone looking.
Unmeshed adds a human-in-the-loop checkpoint before any deploy goes out. A real person gets a Slack message asking if it is safe to ship. If nobody responds in time, it escalates automatically instead of sitting stuck or shipping blind.
Trusted by teams at leading organisations
What Changes
Passing tests is not the same as someone deciding it is safe to ship.
Trigger
Tests Pass, the Gate Opens
Once the test suite passes, the pipeline does not deploy straight away. It pauses here, at a human-in-the-loop checkpoint, and waits for a real decision.
- RULE
Trigger the gate only after tests pass
- RULE
Pause the pipeline; do not deploy automatically
- RULE
Every gate event gets logged before anything else happens
Gate Path
Tests Pass
# tests_passed
Log Gate Event
# log_gate_event
Pause the Pipeline
# hold_deploy
Approval Request Path
Attach What Changed
# build_context
Ask in Slack
# slack_safe_to_ship
Wait for a Decision
# wait_for_response
Ask
A Real Person Gets the Decision
A Slack message goes to the right person, with enough context to actually decide, not just a bare yes or no button with no information behind it.
- HUMAN
A Slack message asks if it is safe to ship
- RULE
The message includes what changed, not just a request to approve
- RULE
The pipeline waits here, no polling, no custom timer code
Escalate
Silence Is Not a Decision
If nobody responds within the window, this does not become a judgment call for the pipeline to make on its own. It escalates to the next person automatically, so a deploy never sits stuck because one person is away.
- RULE
Escalate automatically if there is no response in time
- RULE
The next approver gets the same context, not a cold start
- RULE
Escalation is visible, not a silent retry
Escalation Path
No Response in Time
# response_window
Escalate to Next Approver
# escalate_with_context
Wait for a Decision
# wait_for_response
Decision Path
Approver Responds
# approval_response
Approved
# resume_deploy
Declined
# hold_deploy
Log the Decision
# log_decision
Decide
Ship or Hold, Either Way Is Logged
Once someone responds, the pipeline resumes exactly where it paused. Approved deploys ship. Declined ones hold, with the reason attached to the record.
- HUMAN
Approve or decline with a reason
- RULE
An approval resumes the deploy immediately
- RULE
A decline holds the deploy and logs why
A human-in-the-loop checkpoint is not a Slack message that gets ignored. It is a pipeline that actually waits and escalates if nobody answers.
One checkpoint
Before every production deploy
Automatic escalation
No stuck pipelines
Full record
Approval, decline, and deploy in one trace
Connects to Your Stack
Works with the pipeline you already run.
Inside the Workflow
Four pieces, one workflow.
Human-in-the-loop checkpoint
A real person decides before production sees the change.
Context included
The approval request shows what changed, not just a blind yes or no.
Automatic escalation
Silence does not stall the pipeline.
Full trace
Approval, decline, and deploy all logged in one record.
Why It Holds Up in Production
Built for the deploy nobody wants to approve blind.
No stuck pipelines
An unanswered request escalates instead of waiting forever.
Context by default
Reviewers see what changed, not just a request.
Resumable waits
The pipeline holds state with no custom polling code.
Full run history
Every gate event is logged and traceable.
Frequently asked questions
Still have questions? Talk to us.
Let a person decide before production does.
Connect your CI or CD pipeline and Slack, and every deploy gets a real human-in-the-loop checkpoint before it ships.