AI-powered daily standup agent — pulls GitHub activity, summarizes it with Claude, and posts to Slack.
npm package:
standup-agent| CLI commands:standup-agentorstandup-cli(both work)
Daily Standup — Tuesday, February 18, 2026
Ram
Yesterday
Completed auth module refactor (PR #42 merged)
Reviewed and approved Priya's dashboard PR (#39)
Commented on ticket #18 re: missing design specs
Today
Continue work on #15 — dashboard API integration
Blockers
#18 still pending design input
---
Priya
Yesterday
Opened PR #50 for user profile screen
Fixed bug in payment gateway (commit a4f2b1c)
...
Follow these steps to get standup-agent running on your machine. Total setup time: ~10 minutes.
Make sure you have Node.js 18+ installed:
node --version # should show v18.x.x or higherYou'll also need three API keys/tokens ready. See the API Keys & Tokens section below for step-by-step instructions on getting each one:
| What | Where to get it | Looks like |
|---|---|---|
| GitHub Personal Access Token | https://github.com/settings/tokens | ghp_xxxxxxxxxxxx |
| Anthropic API Key | https://console.anthropic.com/settings/keys | sk-ant-xxxxxxxxxxxx |
| Slack User OAuth Token | https://api.slack.com/apps (create an app) | xoxp-xxxxxxxxxxxx |
| Slack Channel ID | Your Slack channel URL or channel details | C0XXXXXXX |
npm install -g standup-agentOr use without installing:
npx standup-agent setupAfter installing, both standup-agent and standup-cli work as commands.
standup-agent setupThe wizard will ask you for each piece of configuration, one at a time:
1. GitHub Personal Access Token → paste your ghp_... token
2. GitHub owner → the org or user that owns the repo (e.g. "egovernments")
3. GitHub repository name → the repo name (e.g. "DIGIT-Frontend")
4. Additional repositories → optional, comma-separated owner/repo pairs (or press Enter to skip)
5. Team member GitHub usernames → comma-separated (e.g. "alice,bob,charlie")
6. Slack User OAuth Token → paste your xoxp-... token
7. Slack Channel ID → paste your C0... channel ID
8. Cron schedule → press Enter for default (9 AM weekdays)
9. Timezone → press Enter for default (Asia/Kolkata)
10. Lookback hours → press Enter for default (24 hours)
11. Anthropic API Key → paste your sk-ant-... key
Configuration is saved to ~/.standup-cli/config.json and ~/.standup-cli/.env.
standup-agent runThis fetches each team member's GitHub activity from the last 24 hours, summarizes it with Claude AI, and posts the standup to your Slack channel. You should see the standup appear within seconds.
standup-agent chatThis opens an interactive chat where you can ask questions:
You: What did alice work on today?
You: Show me open PRs across all repos
You: Generate and post the standup for everyone
You: exit
standup-agent scheduleThis starts a cron scheduler that automatically runs the standup at your configured time (default: 9 AM weekdays). Keep the terminal open, or use pm2/nohup to run in the background (see Running in the Background).
No need to re-run the full wizard. Change individual settings:
standup-agent update team-members alice,bob,charlie,dave
standup-agent update repos my-org/frontend,my-org/backend
standup-agent update timezone America/New_York
standup-agent update lookback-hours 48Run standup-agent update with no arguments to see your current config and all available fields.
standup-agent statusShows your current schedule, timezone, team members, and repos at a glance.
| Command | Alias | Description |
|---|---|---|
standup-agent setup |
configure |
Interactive configuration wizard |
standup-agent run |
-r |
Generate and post standup (pipeline mode — fast, cheap) |
standup-agent agent |
-a, chat |
Interactive AI chat — ask about team activity, post standups |
standup-agent schedule |
-s |
Start the daily cron scheduler |
standup-agent status |
Show current configuration summary | |
standup-agent update [field] [value] |
Update a single config field |
All commands also work with standup-cli instead of standup-agent.
standup-agent agent
# or
standup-agent chatOpens an interactive REPL where you can have a conversation with the AI agent. The agent has access to tools for fetching GitHub data and posting to Slack, and decides what to call based on your request.
Example prompts:
- "What did ram and naveen work on in the last 24 hours?"
- "Show me open PRs that need review"
- "Generate and post standup for the whole team"
- "Summarize activity across all repos since yesterday"
- Cross-references PRs with issues (e.g., "PR #42 fixes issue #18")
- Detects stale reviews and flags them as blockers
- Identifies patterns across team members (e.g., multiple people working on the same area)
- Works across multiple repositories in a single run
- Produces more contextual "today" predictions based on work-in-progress
standup-agent runA fixed, predictable pipeline: fetch commits/PRs/issues for each team member, summarize each with one Claude call, and post everything to Slack. Fast and cheap — ideal for automated daily runs.
Pipeline (run) |
Agent (agent) |
|
|---|---|---|
| API calls per standup | 1 per member (Haiku) | 3-8 total (Sonnet) |
| Cost per run (8 members) | ~$0.01 | ~$0.05 |
| Monthly cost (weekdays, 6 teams) | ~$2/mo | ~$6/mo |
| Cross-referencing | None | Yes |
| Blocker detection | Keyword-based | Context-aware |
All configuration is stored in ~/.standup-cli/.
{
"github_token": "ghp_...",
"github_owner": "my-org",
"github_repo": "frontend",
"github_repos": [
{ "owner": "my-org", "repo": "frontend" },
{ "owner": "my-org", "repo": "backend" }
],
"team_members": ["alice", "bob", "charlie"],
"slack_user_token": "xoxp-...",
"slack_channel_id": "C0XXXXXXX",
"anthropic_api_key": "sk-ant-...",
"lookback_hours": 24,
"schedule": "0 9 * * 1-5",
"timezone": "Asia/Kolkata"
}| Key | Type | Description |
|---|---|---|
github_token |
string | GitHub Personal Access Token |
github_owner |
string | Primary repo owner (org or user) |
github_repo |
string | Primary repo name |
github_repos |
array | All repos to query (used by agent mode) |
team_members |
string[] | GitHub usernames of team members |
slack_user_token |
string | Slack User OAuth Token (xoxp-...) |
slack_channel_id |
string | Slack channel ID (C0...) |
anthropic_api_key |
string | Anthropic API key (sk-ant-...) |
lookback_hours |
number | How many hours back to fetch activity (default: 24) |
schedule |
string | Cron expression for the scheduler |
timezone |
string | IANA timezone for scheduling |
The .env file at ~/.standup-cli/.env mirrors the token/secret fields and is loaded at runtime:
GITHUB_TOKEN=ghp_...
GITHUB_OWNER=my-org
GITHUB_REPO=frontend
SLACK_USER_TOKEN=xoxp-...
SLACK_CHANNEL_ID=C0XXXXXXX
ANTHROPIC_API_KEY=sk-ant-...
Both files are updated automatically by setup and update.
| Schedule | Meaning |
|---|---|
0 9 * * 1-5 |
9:00 AM, Monday-Friday (default) |
0 10 * * * |
10:00 AM, every day |
30 8 * * 1-5 |
8:30 AM, weekdays |
Change individual config fields without re-running the full setup wizard.
standup-agent update <field> <value>Running standup-agent update with no arguments shows your current configuration and all available fields.
| Field | Description | Example |
|---|---|---|
team-members |
Comma-separated GitHub usernames | standup-agent update team-members alice,bob,charlie |
repos |
Comma-separated owner/repo pairs; first becomes primary |
standup-agent update repos my-org/frontend,my-org/backend |
slack-channel |
Slack channel ID | standup-agent update slack-channel C0ABC1234 |
slack-token |
Slack User OAuth Token | standup-agent update slack-token xoxp-... |
github-token |
GitHub Personal Access Token | standup-agent update github-token ghp_... |
anthropic-key |
Anthropic API key | standup-agent update anthropic-key sk-ant-... |
lookback-hours |
Hours to look back for activity | standup-agent update lookback-hours 48 |
timezone |
IANA timezone | standup-agent update timezone America/New_York |
schedule |
Cron expression | standup-agent update schedule "0 10 * * 1-5" |
Both config.json and .env are updated together automatically.
standup-cli supports fetching activity across multiple GitHub repositories.
During standup-agent setup, after entering your primary repo, you'll be prompted:
Additional repositories? (comma-separated owner/repo, e.g. my-org/backend,my-org/infra — or Enter to skip):
The primary repo plus any extras are stored in github_repos.
standup-agent update repos my-org/frontend,my-org/backend,my-org/infraThe first repo becomes the primary (github_owner/github_repo), and all are stored in github_repos.
Edit ~/.standup-cli/config.json:
{
"github_repos": [
{ "owner": "my-org", "repo": "frontend" },
{ "owner": "my-org", "repo": "backend" },
{ "owner": "my-org", "repo": "infrastructure" }
],
"github_owner": "my-org",
"github_repo": "frontend"
}github_reposis used by agent mode to query all listed repositories.github_owner/github_repois used by pipeline mode (run) and as a fallback whengithub_reposis not set.
When adding team members, use their exact GitHub usernames (not display names or email addresses).
# During setup wizard:
Team member GitHub usernames: ramkrishna-egov,priya-dev,naveen42
# Or update later:
standup-agent update team-members ramkrishna-egov,priya-dev,naveen42To find someone's GitHub username: go to their GitHub profile — the URL is github.com/their-username.
The tool matches commits, PRs, and issues by GitHub username. If the username is wrong, that person will show "No GitHub activity recorded."
- Go to GitHub > Settings > Developer settings > Personal access tokens > Tokens (classic) Direct link: https://github.com/settings/tokens
- Click "Generate new token (classic)"
- Select scopes:
repo,read:org - Copy the token (starts with
ghp_...)
For organization repos with SSO/SAML: After creating the token, click "Configure SSO" next to it and "Authorize" it for your organization. Without this, you'll get 404 errors on org repos.
- Go to https://console.anthropic.com/settings/keys
- Click "Create Key"
- Copy the key (starts with
sk-ant-...) - Make sure you have credits or a payment method on your Anthropic account
The tool uses claude-haiku-4-5 (pipeline) and claude-sonnet-4-5 (agent) — typical cost is under $0.05 per standup run.
- Go to https://api.slack.com/apps and click "Create New App" > "From scratch"
- Give it a name (e.g. "Standup Bot") and select your workspace
- Go to OAuth & Permissions in the sidebar
- Under User Token Scopes, add:
chat:write,channels:read - Click "Install to Workspace" and approve
- Copy the User OAuth Token (starts with
xoxp-...)
- Open Slack in your browser (not the desktop app)
- Navigate to your standup channel
- Look at the URL:
https://app.slack.com/client/T0XXXXX/C0XXXXX - The
C0XXXXXpart is your Channel ID
Alternatively, right-click the channel name in the Slack desktop app > "View channel details" > scroll to the bottom to find the Channel ID.
The standup-agent schedule command needs to keep running. Here are ways to keep it alive:
Option 1 — pm2 (recommended)
npm install -g pm2
pm2 start standup-cli -- schedule
pm2 save
pm2 startup # auto-start on rebootOption 2 — nohup
nohup standup-agent schedule > ~/standup.log 2>&1 &Option 3 — System cron (run once daily instead of scheduler)
crontab -e
# Add:
0 9 * * 1-5 standup-agent run >> ~/standup.log 2>&1"Configuration not found"
Run standup-agent setup first.
404 error on GitHub API
- Check that
github_owneris the org or user that owns the repo, not your personal username - For org repos with SSO, authorize your token: GitHub > Settings > Tokens > Configure SSO > Authorize
Slack message not appearing
- Verify your
SLACK_USER_TOKENstarts withxoxp- - Verify the Channel ID starts with
C - Make sure the Slack app is installed to your workspace
- Check that the bot has been invited to the channel
AI summarization failed
- Verify your Anthropic API key is correct and has credits
- Check https://console.anthropic.com/settings/usage for your balance
GitHub rate limits The GitHub API allows 5,000 requests/hour with a PAT. For very large teams (10+ members) or very active repos, you might occasionally hit this.
If you want to run from source instead of npm, or contribute to the project:
# Clone the repo
git clone https://github.com/Ram479/standup-cli.git
cd standup-cli
# Install dependencies
npm install
# Run in dev mode (no build needed)
npx tsx src/cli.ts setup
npx tsx src/cli.ts run
npx tsx src/cli.ts chat
# Build to dist/
npm run build
# Test the built version
node dist/cli.js run
# Link globally (optional — makes standup-agent command available system-wide)
npm link
standup-agent runContributions are welcome! Feel free to open issues or submit pull requests at https://github.com/Ram479/standup-cli.
MIT