llm-devin
Installation
Install this plugin in the same environment as LLM.
llm install llm-devin
Usage
Devin API
prerequisite: Devin API key and Organization ID (Devin Team Plan)
https://docs.devin.ai/api-reference/overview
Set up a service user and get your organization ID from Settings > Service users.
export LLM_DEVIN_KEY=your_api_key_here
export LLM_DEVIN_ORG_ID=your_org_id_here
llm -m devin "Hello, Devin"
Options for creating a new session (all optional; see the API reference):
llm -m devin \
-o title "Release notes" \
-o tags "release-notes,owner-repo" \
-o repos "owner/repo" \
-o max_acu_limit 5 \
-o playbook_id playbook-xxxx \
-o devin_mode fast \
"Explain the changes in the latest release of https://github.com/owner/repo"
tags and repos are comma-separated. These options only apply when a new session is created; they are ignored when continuing a conversation.
Continue that Devin conversation with llm -c immediately after the previous command, or specify the model explicitly:
llm -m devin -c "Follow-up message"
Send a message to an existing Devin session by ID or URL, even when there is no local llm conversation history for it (e.g. a session started from the Devin web app or on another machine):
llm -m devin -o session devin-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx "Follow-up message"
llm -m devin -o session https://app.devin.ai/sessions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx "Follow-up message"
Before sending, Continuing Devin session: <URL> is printed. If the value is not a valid session ID/URL, or the session does not exist or is not accessible with your API key, the command fails without creating a new session. The session is recorded in the llm log, so you can keep going with llm -c afterwards.
session cannot be combined with -c/--cid when that conversation already has history for a different (or unknown) Devin session, because the destination would be ambiguous; such a command is rejected. Use -c/--cid alone to continue the logged conversation, or -o session alone to target a specific session. If the logged conversation already belongs to the same session, the combination is allowed (this is what llm chat -m devin -o session ... does on every turn after the first).
Start an interactive chat session:
llm chat -m devin
Reading an existing Devin session
llm devin status and llm devin messages read an existing session without sending anything to Devin. They only call read-only Devin API endpoints (get session, list session messages): no session is created, no message is sent, and no suspended session is resumed. They need no local llm conversation history, so they work after the CLI exited or the connection dropped, and for sessions started from the Devin web app or another machine. Each command fetches once and exits; it does not poll until the session finishes.
Both commands accept a session ID or an app.devin.ai session URL (the same values as -o session), and read LLM_DEVIN_KEY (or llm keys set devin, or --key) and LLM_DEVIN_ORG_ID.
llm devin status devin-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
llm devin status https://app.devin.ai/sessions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
llm devin status devin-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --json
status shows what the API returns for the session: status and status detail, title, tags, creation/update timestamps (raw values from the API), consumed ACUs, structured output, pull request URLs with their state, plus the latest message from Devin. Fields the API does not provide are omitted.
llm devin messages devin-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
llm devin messages devin-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --source devin --limit 3
llm devin messages devin-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --json
messages lists the session messages oldest first, following the API pagination to the end so that --limit N returns the N most recent ones. --source devin|user filters by sender.
With --json, only JSON is written to standard output, so it can be piped into jq or another script. Invalid session IDs/URLs, a missing key or organization ID, sessions that are not accessible, and API or network failures are reported on standard error and exit with a non-zero status.
DeepWiki
llm -m deepwiki -o repository ftnext/llm-devin "Summarize this repository"
Development
To set up this plugin locally, first checkout the code:
cd llm-devin
Then create a new virtual environment and install the dependencies and test dependencies:
uv sync --extra test
To run the tests:
uv run pytest
Release files for llm-devin 0.0.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| llm_devin-0.0.7.tar.gz | 24.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| llm_devin-0.0.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.9 kB
Release files / llm_devin-0.0.7.tar.gz
| Download URL | llm_devin-0.0.7.tar.gz |
|---|---|
| Size | 24.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7d228f750d0bec5077ab563cfdfe0690c5d2b824196142402b4cfdcd61518ccd
|
|
BLAKE2b-256 checksum How to use checksums |
e71338b56edfa74a0adab7fcee166fd254f22804670e5be7b5372564b5697d18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.
Transparency logRelease files / llm_devin-0.0.7-py3-none-any.whl
| Download URL | llm_devin-0.0.7-py3-none-any.whl |
|---|---|
| Size | 16.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
42c4bb801435b0d272bf99f65fdfeb7e852b5e2d3906ae2c2b3009552a268a72
|
|
BLAKE2b-256 checksum How to use checksums |
8db460a4200f130c130bf569eedd536bd551d115e6bab0a0d647eb955c468081
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.
Transparency log