Devin AI Software Engineer: Complete Setup Guide for Team Workspace, GitHub Integration, Slack Notifications & First Task Assignment
Devin AI Software Engineer: Complete Installation & Setup Guide
Devin by Cognition AI is the world’s first fully autonomous AI software engineer capable of planning, coding, debugging, and deploying entire projects. This guide walks you through setting up Devin for your team — from creating your workspace to assigning your first coding task.
Prerequisites
- A Cognition AI account with a Teams or Enterprise plan- Admin access to your GitHub organization- Slack workspace admin privileges (for notifications)- A modern web browser (Chrome, Firefox, or Edge)
Step 1: Create Your Team Workspace
Your Devin workspace is the central hub where all AI-assisted engineering tasks are managed.
- Navigate to app.devin.ai and sign in with your SSO or email credentials.- Click Create New Workspace from the dashboard.- Enter your workspace details:
Workspace Name: your-company-engineering Plan: Teams Region: US-East (or closest to your team) Default Branch Convention: feature/devin-*- Invite team members by entering their email addresses or sharing the invite link.- Assign roles: Admin, Manager (can assign tasks), or Viewer (read-only access to sessions).
Configure Workspace Settings
Navigate to **Settings → General** in your workspace and configure the following:
# Workspace configuration via Devin CLI
npx @cognition-ai/devin-cli config set \
--workspace your-company-engineering \
--default-language typescript \
--auto-lint true \
--max-concurrent-sessions 5 \
--session-timeout 120
## Step 2: Connect GitHub to Devin
GitHub integration allows Devin to read repositories, create branches, commit code, and open pull requests autonomously.
- In your Devin workspace, go to **Settings → Integrations → GitHub**.- Click **Install GitHub App** — this redirects you to GitHub.- Select your GitHub organization and choose repository access:# Recommended: Grant access to specific repositories
Repositories:
✅ your-org/frontend-app
✅ your-org/backend-api
✅ your-org/shared-utils
❌ your-org/infrastructure (sensitive)- Approve the permissions request. Devin requires:
# Create a .devin/config.json in your repository root
{
"version": 1,
"setup_commands": [
"npm install",
"cp .env.example .env"
],
"environment": {
"NODE_ENV": "development",
"API_KEY": "YOUR_API_KEY"
},
"lint_command": "npm run lint",
"test_command": "npm run test",
"build_command": "npm run build",
"branch_prefix": "devin/",
"auto_pr": true,
"reviewers": ["lead-dev", "tech-lead"]
}
## Step 3: Set Up Slack Notifications
Receive real-time updates when Devin completes tasks, encounters blockers, or opens pull requests.
- Go to **Settings → Integrations → Slack** in your Devin workspace.- Click **Add to Slack** and authorize the Devin app in your Slack workspace.- Configure notification channels:# Slack notification configuration
Channel Mapping:
#devin-updates → All task completions and PR links
#devin-alerts → Errors, blockers, and failed tasks
#engineering → Weekly summary reports
Notification Triggers:
✅ Task started
✅ Task completed
✅ Pull request opened
✅ Task blocked (needs human input)
✅ Build/test failures
❌ Session heartbeats (too noisy)- Test the integration by clicking Send Test Notification.
Interact with Devin via Slack
You can also assign tasks directly from Slack:
# In any Slack channel where the Devin app is installed:
@Devin fix the authentication bug in issue #142
@Devin write unit tests for the UserService class in backend-api
@Devin refactor the payment module to use the Strategy pattern
Step 4: Assign Your First Coding Task
Now that everything is connected, let's assign Devin its first real task.
Option A: Via the Devin Web Interface
- Click New Session from your workspace dashboard.- Select the target repository (e.g.,
your-org/backend-api).- Describe the task in natural language:Task: Create a REST API endpoint for user profile updates
Requirements:
- PATCH /api/v1/users/:id/profile
- Accept fields: displayName, bio, avatarUrl
- Validate input using Zod schema
- Write unit tests with Jest
Follow existing code patterns in src/controllers/- Set task parameters:- Branch: auto-create from main- Priority: Normal- Auto-PR: Yes- Reviewers: @your-username - Click Start Session and watch Devin work in real time.
Option B: Via the Devin CLI
# Install the Devin CLI
npm install -g @cognition-ai/devin-cli
# Authenticate
devin auth login --token YOUR_API_KEY
# Assign a task
devin task create \
--repo your-org/backend-api \
--branch main \
--description "Add rate limiting middleware using express-rate-limit. Apply 100 requests per 15 minutes per IP to all /api routes. Include tests." \
--auto-pr \
--reviewers "lead-dev,tech-lead"
# Monitor task progress
devin task status --id TASK_ID
# List all active sessions
devin sessions list --workspace your-company-engineering
Pro Tips for Power Users
| Tip | Description |
|---|---|
| **Use Knowledge Files** | Add a .devin/knowledge/ directory with architecture docs, coding standards, and API specs. Devin references these for context-aware code generation. |
| **Snapshot Environments** | Pre-configure Docker snapshots so Devin boots into a ready-to-code environment instantly, reducing setup time per session. |
| **Chain Tasks** | Use devin task create --depends-on TASK_ID to create dependent task chains for multi-step features. |
| **Custom Playbooks** | Create .devin/playbooks/ with reusable instruction sets like "new-endpoint.md" or "add-migration.md" for consistent outputs. |
| **Session Pinning** | Pin critical context in long sessions using @Devin pin: always run tests before committing to prevent context drift. |
| Issue | Cause | Solution |
|---|---|---|
| GitHub integration shows "Disconnected" | OAuth token expired or permissions revoked | Reinstall the GitHub App from Settings → Integrations. Ensure org admin approval is granted. |
| Devin cannot find repository files | Repository access not granted during GitHub App install | Go to GitHub → Settings → Applications → Devin → Configure → add the missing repository. |
| Slack notifications not arriving | Channel not mapped or bot removed from channel | Re-invite @Devin to the Slack channel and verify channel mapping in Settings → Slack. |
| Task stuck at "Setting up environment" | Missing dependencies or broken setup commands | Review .devin/config.json setup_commands. Ensure all packages install cleanly in a fresh environment. |
| PR created but tests fail in CI | Devin's test environment differs from CI | Align .devin/config.json environment variables and Node/Python versions with your CI pipeline configuration. |
Can Devin work with private repositories and monorepos?
Yes. Devin fully supports private repositories once you grant access through the GitHub App installation. For monorepos, configure the .devin/config.json at the repository root and specify the working directory for each task using --workdir packages/your-package in the CLI or by setting the path in the web interface. Devin understands workspace structures including npm workspaces, Yarn workspaces, and Turborepo setups.
How does Devin handle API keys and secrets during coding sessions?
Devin provides a Secrets Manager in your workspace settings where you can securely store environment variables and API keys. These are injected into the session environment at runtime and are never committed to code. You can also reference secrets in .devin/config.json using the syntax ${{ secrets.YOUR_SECRET_NAME }}. For additional security, Enterprise plans support integration with external vaults like HashiCorp Vault and AWS Secrets Manager.
What happens if Devin gets stuck or produces incorrect code?
Devin will proactively flag blockers and send a notification via Slack or the web interface asking for human input. You can intervene at any point during a session by typing instructions in the session chat. If the output is incorrect, you can ask Devin to revise its approach, revert changes, or take over manually. All sessions maintain a full activity log and you can roll back to any point in the session history. Setting clear requirements and providing knowledge files significantly reduces the likelihood of incorrect outputs.