Spore-bot Automation Stable โ
What it is. Spore-bot connects your Slack or Microsoft Teams workspace to your running instances.
When to use it. When you (or a collaborator) want to check on or control an instance without opening a terminal or holding AWS credentials โ from a phone, a shared channel, or mid-meeting. Also how lifecycle notifications reach you as DMs.
Any team member you've authorised can control instances from chat โ without a terminal, without AWS credentials, from any device. Setup lives in the Slack Setup guide; the trust model (cross-account role, per-user access) is in Security, credentials & data flow.
What it does โ
Slash commands (in any channel):
| Command | Action |
|---|---|
/spore list | All your registered instances with status |
/spore status [name] | State, type, IP, DNS, TTL countdown |
/spore start [name] | Start a stopped instance |
/spore stop [name] | Stop a running instance |
/spore hibernate [name] | Hibernate (save RAM, stop billing) |
/spore extend [name] [duration] | Extend the TTL |
/spore url [name] | Get the instance URL |
/spore connect [duration] | Generate a one-time code for a collaborator |
/spore notify [name] | Subscribe to DM notifications |
/spore unnotify [name] | Unsubscribe |
/spore help | Command reference |
Direct message notifications โ lifecycle events arrive as DMs without polling:
- โฑ๏ธ training terminates in 10 minutes โ time to extend if needed
- โ bert-finetune has completed โ job done, instance is terminating
- ๐ค rstudio has hibernated โ idle timeout reached
- โ ๏ธ training received a Spot interruption notice
How it works โ
Spore-bot is a Lambda function running in the spore.host infrastructure account. When you type /spore stop rstudio, Slack sends a signed webhook to the Lambda, which:
- Verifies the Slack signature
- Looks up your registration in DynamoDB
- Assumes your cross-account IAM role
- Calls
ec2:StopInstancesin your AWS account - Responds to Slack with the result
Your AWS credentials never leave your account โ the Lambda only assumes the narrow cross-account role you grant it.
Setup โ
See the full Slack Setup guide for step-by-step instructions. The short version:
- Create a Slack app at api.slack.com/apps
- Add the OAuth redirect URL and configure the
/sporeslash command - Connect your workspace: click "Add to Slack" or run
spawn notify workspace-add - Register instances:
spawn notify register --instance i-0abc123 --nickname rstudio - Enable access:
spawn notify enable --nickname rstudio --user you@lab.edu
Access model โ
- Per-instance, per-user โ you explicitly grant each user access to each instance
- Per-action โ control which operations each user can perform (
start,stop,statusetc.) - Enabled flag โ access can be suspended without revoking the registration
- Cross-account IAM โ the Lambda never has broad EC2 access; it can only assume roles you create
Microsoft Teams โ
Teams works identically to Slack. See Teams Setup.