Move your team from Devin to SWE-agent.
Each person gets a short interview, then a personalized step-by-step guide showing exactly where their saved work, prompts, and projects land in SWE-agent — and the few things that need a manual step, walked through. You send one invite; nobody becomes the help desk, and nothing in Devin is changed or cancelled. Want to see where you’re paying for both first? Run the free audit.
Both tools let teams encode reusable instructions that shape how the agent approaches tasks. To migrate from Devin to SWE-agent: export your Devin Playbook text and translate it into a SWE-agent YAML config file under the `agent` key — Playbook 'Procedure' and 'Specifications' sections become system-prompt additions or tool-set definitions in the config; 'Forbidden Actions' map to cost limits or tool exclusions. Layer multiple configs via `--config base.yaml overrides.yaml` to separate shared from project-specific rules. To migrate from SWE-agent to Devin: take your YAML config's model/tool/behavior settings and create a Playbook in app.devin.ai (Settings > Library > Playbooks), assigning it a '!' macro name for quick reuse; project-specific Docker image choices map to Devin's repo-scoped Knowledge items pinned to the target repo. Knowledge items handle persistent context (architecture notes, coding standards) that SWE-agent teams typically embed inline in the YAML or in the repo's README.
- Warning: Devin Knowledge/Playbooks are stored in a hosted GUI and require a paid plan; SWE-agent config is a version-controlled YAML file — teams moving to Devin lose the 'config-as-code in git' pattern unless they also maintain a separate Devin Playbook repo.
- Warning: SWE-agent YAML config has no equivalent to Devin's org-wide 'Enterprise Knowledge' scope; team-wide defaults in SWE-agent are achieved by committing a shared base config to a central repo.
- Warning: Devin Playbooks support a 'Required-from-User' section that gates sessions on human input; SWE-agent has no built-in human-in-the-loop checkpoint mechanism.
Both tools accept a problem statement and work autonomously to produce code changes without requiring step-by-step human direction. To migrate from Devin to SWE-agent: install SWE-agent and Docker, then replace Devin session triggers with `sweagent run --problem_statement.github_url <issue-url> --env.repo.github_url <repo-url>`. Task descriptions that would go into Devin's session prompt map to `--problem_statement.text` (TextProblemStatement) or directly to a GitHub issue URL. SWE-agent saves the patch locally by default; add `--actions.open_pr` to replicate Devin's automatic PR creation. To migrate from SWE-agent to Devin: paste the GitHub issue URL (or task description) into app.devin.ai or trigger via Slack/Jira assignment; Devin handles the full environment setup in a cloud VM instead of a local Docker container. The core workflow — give a natural-language task, receive a code patch/PR — is the same in both directions.
- Warning: Devin runs in a managed cloud VM with no local Docker dependency; SWE-agent requires Docker installed on the host (or a Modal account for cloud execution). Teams without Docker cannot run SWE-agent locally.
- Warning: SWE-agent is now in maintenance-only mode; its successor mini-swe-agent is the recommended path for new deployments, so the migration should target mini-swe-agent rather than SWE-agent for greenfield use.
- Warning: Devin sessions support real-time human takeover (shell, IDE, browser panes); SWE-agent runs are not interactively steerable mid-run — interventions require stopping and restarting with an amended prompt.
- Warning: Devin's 'three-hour rule of thumb' reflects its broader context window and multi-step planning; SWE-agent is optimized for single-issue patches and may struggle with multi-file refactors that Devin handles in one session.
Both tools close the loop from a filed issue to an open pull request without manual patch application. To migrate from Devin to SWE-agent: remove the Devin service account from Jira/Linear assignments; instead, trigger `sweagent run --problem_statement.github_url <gh-issue-url> --actions.open_pr` from a CI webhook (e.g. a GitHub Actions workflow that fires on issue label). SWE-agent pushes the branch and opens the PR automatically. To migrate from SWE-agent to Devin: connect Devin to your GitHub org and Jira/Linear; assign tickets to the Devin service account or apply the 'devin' label — Devin starts a session, writes the fix, opens a PR, and posts the PR link back to the ticket as a comment. Devin also posts directly back to Jira/Linear, which SWE-agent does not do natively.
- Warning: SWE-agent opens PRs against GitHub only via `--actions.open_pr`; it has no native Jira or Linear integration. Devin writes PR links back to Jira/Linear tickets automatically — that feedback loop must be scripted separately when using SWE-agent.
- Warning: Devin's Jira trigger uses label word-boundary matching ('devin' label works, 'devinworkshop' does not); teams with existing label conventions may need to rename labels.
- Warning: The SWE-agent docs note that `--actions.open_pr` 'should be used responsibly' because the agent may open PRs with incomplete or incorrect patches; Devin similarly recommends human code review before merging.
Both tools support running multiple independent agent instances simultaneously to process several tasks in parallel. To migrate from Devin to SWE-agent batch mode: each concurrent Devin session maps to a separate `sweagent run` invocation; launch them in parallel using a shell loop or a CI matrix job, one per issue or task, each referencing the same config YAML but a different `--problem_statement.github_url`. To migrate from SWE-agent to Devin: create multiple sessions in parallel via the Devin web UI, Slack, or the v3 API (`POST /sessions` in a loop); on Max/Teams/Enterprise plans there is no concurrency cap. For orchestration (one agent coordinating others), Devin's parent/child session feature has no direct SWE-agent equivalent — you would need to script the orchestration logic externally (e.g. a Python script that fans out `sweagent run` calls and collects results).
- Warning: Devin Free and Pro plans cap concurrent sessions at 10; Max, Teams, and Enterprise have unlimited concurrency. SWE-agent has no built-in concurrency limit, but parallel Docker containers consume host resources linearly.
- Warning: Devin's parent/child orchestration (a Devin coordinating sub-Devins) has no equivalent in SWE-agent; external scripting is required to replicate cross-task coordination.
- Warning: SWE-agent batch runs share no state between instances; Devin child sessions can receive mid-run messages from the parent and return structured output schemas.
Both tools provide a contained execution environment for agent code runs — Devin CLI in a local terminal with cloud handoff, SWE-agent in a Docker container. To migrate from Devin CLI to SWE-agent: replace `devin` CLI invocations with `sweagent run`; the Docker container that SWE-agent spins up automatically serves the same isolation role as Devin's cloud VM. Specify a custom base image via `--env.deployment.image` (e.g. `python:3.12`) to match your project's runtime, and add `--env.post_startup_commands` for any setup steps (pip install, apt packages) that Devin would have handled in the VM setup. To migrate from SWE-agent to Devin CLI: install the Devin CLI (`curl -fsSL https://cli.devin.ai/install.sh | bash`), run `devin` in your project directory, and use `/handoff` to escalate longer tasks to a cloud Devin session. The Docker isolation model is entirely local; Devin CLI starts local but the `/handoff` command moves execution to Cognition's cloud.
- Warning: Devin CLI requires a paid Devin plan (Pro, Max, Teams, or Enterprise); SWE-agent is open-source and free to self-host, requiring only Docker and an LLM API key.
- Warning: Devin CLI runs on macOS, Linux, and WSL only; Windows native is not supported. SWE-agent's Docker-based execution works on any Docker-capable host, including Windows.
- Warning: SWE-agent containers are ephemeral and torn down after each run; any artifacts (logs, intermediate files) not captured in the patch or trajectory file are lost. Devin cloud VMs persist for the session duration and can be resumed.
- Warning: The `/handoff` command in Devin CLI sends local context to a cloud session, which consumes ACUs (Devin's metered credits); SWE-agent has no analogous metered cloud resource — costs are purely the LLM API calls per run.