Rovo Dev – a leading AI Coding Agent

Rovo Dev is Atlassian’s enterprise-ready AI coding agent. It’s designed to transform your development workflow – From Jira work item, to code, to pull request, to pipeline, and beyond.

Rovo Dev achieves state-of-the-art results on the SWE-bench benchmark. Rovo Dev has a 41.98% resolve rate across 2,294 tasks on SWE Bench Full. This beats the next best agent by a large margin.

Key capabilities include:

  • Code Understanding & Navigation: Instantly analyze repositories, generate documentation, and get code explanations in natural language
  • Development Acceleration: AI-assisted code completion, intelligent refactoring, automated testing, and interactive debugging
  • Atlassian Ecosystem Integration: Direct integration with Jira issues, Confluence docs, and Bitbucket repositories
  • Security & Administration: Enterprise-grade security with robust permission controls and user management

Why we integrated with the IDE

Developers want to use tools where they work. They spend a significant amount of time in their IDE. Context switching between tools disrupts their flow state.

Also, the IDE provides a user experience that is harder to deliver in the CLI.

Key benefits of an IDE integration:

  • Staying in the flow: Users can stay within the IDE and easily work with Rovo Dev.
  • Contextual Awareness: Rovo Dev can see which files you’re currently working on
  • Easy Context Addition: Quickly add context such as lines of code and files.
  • Seamless Diff Viewing: Changes displayed in the familiar IDE diff interface
  • Workflow Integration: Integration with IDE tools, such as linting.

We currently offer support for Visual Studio Code and its forks, such as Cursor and Windsurf.

IDEDeep Link
Visual Studio Codevscode://atlassian.atlascode/extension
Cursorcursor://atlassian.atlascode/extension
Windsurfwindsurf://atlassian.atlascode/extension

You can find more information about getting started here:

How it works

In a Picture

To get Rovo Dev to work for a user, you need:

  1. Input from the user:
    1. Jira cloud credentials: User email & API token
    2. Atlassian Jira Site
    3. User’s directory
  2. Resources as a developer
    1. Rovo Dev Binary
    2. Port
    3. Xid
    4. Command to run it all
    5. API Docs

Let’s look at each of these.

Rovo Dev Binary

If the ACLI meets your needs, you can use ACLI with Rovo Dev. Learn more here: https://support.atlassian.com/rovo/docs/install-and-run-rovo-dev-cli-on-your-device/

The Atlassian extension automatically detects if the Rovo Dev binary needs downloading or updating and downloads it if necessary. Users don’t need to set up the binary, as the extension handles this automatically, improving the user experience.

Credentials

User Email

This is the same email that the user would use to login. Ex: john_doe@example.com

API Token

If your application can use scoped tokens, the user can auto-create one here: https://id.atlassian.com/manage-profile/security/api-tokens?autofillToken&expiryDays=max&appId=rovodev&selectedScopes=all

If your application cannot use scoped tokens, the user can manually create on here: https://id.atlassian.com/manage-profile/security/api-tokens

Atlassian Jira Site

This is the Jira site that the Rovo Dev will check for entitlements & usage.

We let the user know how to find their site by looking at one of their recent Jiras – for example, mysite.atlassian.net/browse/JIRA-1 maps to mysite.atlassian.net

If your application has the user’s OAuth token, the oauth/token/accessible-resources API can show the user’s sites. You can present that as a list for the user to choose from.

Xid

This is an identifier for your experience. This helps Atlassian prevent abuse. Also, this lets admins know where Rovo Dev credits are being consumed. Ex: com.example.rovodev.use_case

User’s directory

Rovo Dev runs in a directory. Our best practice is to have a directory that contains all the context Rovo Dev needs to complete the job. Often, this is the root of a code repository.

Command

# run this command in the appropriate folder 
USER_API_TOKEN={API_TOKEN} \
USER_EMAIL={USER_EMAIL} \
{RovoDevExecutable} \
serve {port} \
--xid {your_unique_experience_id} \
--site-url {USER_SITE}

API Docs

Once you run the command above, you can find the swagger docs at http://localhost:{port}/docs

Once Rovo Dev is running, we need to handle:

Entitlements

The site that the user has may not have access to Rovo Dev. If this occurs, Rovo Dev will fail its healthcheck with a ‘entitlement check failed’ state. In this scenario, every API will be disabled except for the healthcheck and shutdown APIs. The user can take action, such as contacting their admin or switching to a site that has Rovo Dev.

Permissions

Rovo Dev may need to run sensitive commands, such as bash commands. When doing so, it will await the user’s permission to proceed. The Atlassian extension presents this as a modal that the user can accept or decline. It also expose yolo mode to reduce friction for the user.

Usage

The user may have used all of their credits on Rovo Dev. When this occurs, Rovo Dev will throw an error indicating this. The Atlassian extension then presents this to user, so that the user can take action – such as contacting their admin, or switching to a site on which they have more credits available.

Some learnings

Discoverable Authentication

In our early versions, our authentication was quite hidden. This meant many of our users struggled to get started. Even once they found the place to authenticate, they struggled to understand where to create the API token.

Learning: Make the calls to action for authentication easily discoverable. Assist users by providing links to create API tokens.

Eager initialization

Rovo Dev takes time to both download and to start up. When we first built this, the users would have to face both of these time lags. To improve this, we allowed Rovo Dev to download and start up eagerly to improve the user experience.

Learning: Parallelizing the download and initialization of Rovo Dev with other user activities. This increases the likelihood that Rovo Dev is ready when the user sends the chat.

Clear error messages

Rovo Dev has a couple of user-facing error messages around authentication, directories, permissions, and usage. When we make these easily visible in the UX, users can make the necessary choices to allow Rovo Dev to continue.

Managing multiple Rovo Dev instances

Some user have multiple instances of their IDE open. They may multitask across these instances. This means that Rovo Dev needs to multitask. The simple solution is to have a Rovo Dev instance running per IDE instance. However, this raises a challenge. One needs to know which ports are available and properly clean up processes.

We achieved this by tracking which ports mapped to specific directories and, if the Rovo Dev process was active, recording its PID.

We are excited to see what you build next with Rovo Dev!

Building on top of Rovo Dev Serve mode: Rovo Dev in the IDE