# Oktul Code Studio

Scripts for Jira and Confluence that show what they would change first.

Oktul Code Studio stores, edits and runs JavaScript and TypeScript scripts on Atlassian Forge, inside your own site. A script runs from the console, a product event, a schedule, a Jira automation rule or an HTTP request. In the sandbox it reads your site for real, and every write is listed instead of sent. ScriptRunner Connect scripts run unchanged. A Rovo agent converts ScriptRunner Groovy scripts to TypeScript; Groovy itself never runs.

- **Host:** Jira Cloud, Confluence Cloud
- **Version:** v2.4.0
- **Documentation:** https://oktul.com/docs/plugins/code-studio/
- **Video:** https://oktul.com/videos/code-studio/

## Scripting Jira and Confluence usually means running someone else's servers

### Every script needs somewhere to run and to keep its credentials

A script that changes work items or pages on an event, a schedule or a rule needs a server and a safe place for its credentials. Someone also has to know what it will do before it runs.

### Testing a script on production changes production

A script is tested by running it. A test site rarely holds the same data.

### A sandbox run lists every write instead of making it

Oktul Code Studio runs every script on Atlassian Forge, inside your site. In the sandbox a script reads your real data and lists each change it would make. Production runs only scripts a site administrator has published.

## What it does in Jira and Confluence

One app for both products. Install it for your site's main product and connect the other.

### In-product editor

The console opens from the product's Apps menu. It has a script tree in spaces, an editor with TypeScript completion for the Code Studio API, revisions, drafts and publishing, and a run panel with the log, the result and the changes. https://oktul.com/docs/plugins/code-studio/writing-scripts/

### Sandbox

In the sandbox a script reads Jira and Confluence for real. Each write is recorded and answered with a simulated response. A production run can still differ, because the site can change in between. https://oktul.com/docs/plugins/code-studio/sandbox-and-production/#sandbox

### Triggers and schedules

A script runs on a Jira or Confluence event, on a cron schedule, from a Jira automation rule with its smart values, or from an HTTP request that carries a secret. Any run can be stopped at any moment. https://oktul.com/docs/plugins/code-studio/triggers/

### Built-in AI scripting

Describe a script in your own words, or hand over exported automation rules. The Rovo author plans it, writes it and tests it in the sandbox. Rovo's AI credits come from your organisation's allowance. https://oktul.com/docs/plugins/code-studio/rovo/

### Agents that read your site as you

Code Studio's five Rovo agents read your scripts and your site as the person talking to them, with that person's permissions. They write drafts only. Once an organisation admin connects Code Studio, every script is in the Teamwork Graph, and Rovo Search and Rovo Chat show it only to the people Code Studio shows it to. Claude and other assistants can use the same tools on the person's own plan, once an administrator turns them on. The app runs no AI model and holds no AI provider key.

### Every feature

**Write**

- [JavaScript and TypeScript](https://oktul.com/docs/plugins/code-studio/scripts/#languages)
- [AssemblyScript for heavy work](https://oktul.com/docs/plugins/code-studio/scripts/#languages)
- [Revisions, drafts and publishing](https://oktul.com/docs/plugins/code-studio/scripts/#revisions-drafts-and-publishing)
- [GitHub, Bitbucket and GitLab sync](https://oktul.com/docs/plugins/code-studio/scripts/#repositories)
- [Groovy migration](https://oktul.com/docs/plugins/code-studio/groovy-migration/)

**Run**

- [Sandbox](https://oktul.com/docs/plugins/code-studio/sandbox-and-production/#sandbox)
- [Production](https://oktul.com/docs/plugins/code-studio/sandbox-and-production/#production)
- [Whom a run acts as](https://oktul.com/docs/plugins/code-studio/sandbox-and-production/#whom-a-run-acts-as)
- [Stopping and continuing](https://oktul.com/docs/plugins/code-studio/sandbox-and-production/#stopping-and-continuing)

**Trigger**

- [Listeners](https://oktul.com/docs/plugins/code-studio/triggers/#listeners)
- [Schedules](https://oktul.com/docs/plugins/code-studio/triggers/#schedules)
- [API triggers](https://oktul.com/docs/plugins/code-studio/triggers/#api-triggers)
- [Jira automation](https://oktul.com/docs/plugins/code-studio/triggers/#jira-automation)

**Connect**

- [Connections](https://oktul.com/docs/plugins/code-studio/connections-and-variables/#connections)
- [Approved hosts](https://oktul.com/docs/plugins/code-studio/connections-and-variables/#approving-a-host)
- [Script variables](https://oktul.com/docs/plugins/code-studio/connections-and-variables/#script-variables)
- [Requests to other systems](https://oktul.com/docs/plugins/code-studio/requests-to-other-systems/)

**Fields and forms**

- [Scripted fields](https://oktul.com/docs/plugins/code-studio/fields-and-forms/#scripted-fields)
- [Dynamic forms](https://oktul.com/docs/plugins/code-studio/fields-and-forms/#dynamic-forms)

**Rovo**

- [Rovo agents](https://oktul.com/docs/plugins/code-studio/rovo/)
- [Rovo Search and Rovo Chat](https://oktul.com/docs/plugins/code-studio/rovo/#rovo-search-and-rovo-chat)
- [Teamwork Graph connector](https://oktul.com/docs/plugins/code-studio/teamwork-graph/)

**Administration**

- [Who may do what](https://oktul.com/docs/plugins/code-studio/configure/#who-may-do-what)
- [Spaces](https://oktul.com/docs/plugins/code-studio/configure/#spaces)
- [Import and export](https://oktul.com/docs/plugins/code-studio/configure/#import-and-export)
- [Audit log](https://oktul.com/docs/plugins/code-studio/configure/#the-audit-log)

## Compared with other scripting apps for Jira and Confluence

Each row is one capability. An app gets a tick only when it does everything the row describes, and where it does part of it, the cell names the part that is missing.

| Capability | Oktul Code Studio (Oktul) | [ScriptRunner for Jira](https://marketplace.atlassian.com/apps/6820/scriptrunner-for-jira) (Adaptavist) | [Power Scripts](https://marketplace.atlassian.com/apps/43318/power-scripts-jira-script-automation) (Appfire) | [Jira Misc Workflow Extensions (JMWE)](https://marketplace.atlassian.com/apps/292/jira-misc-workflow-extensions-jmwe) (Appfire) |
| --- | --- | --- | --- | --- |
| JavaScript and TypeScript | Yes | No | No | No |
| A sandbox that lists the changes | Yes | No | No | Partly: Shows a template's result, not its changes |
| Jira and Confluence in one app | Yes | Partly: Confluence is a separate app | No | No |
| Scripts stay inside Atlassian | Yes | No | No | No |
| Rovo agents for scripts | Yes | No | No | No |
| Listeners and schedules | Yes | Yes | Yes | Yes |
| Scripted fields | Yes | Yes | Yes | No |

Checked on 21.10.2026 against each product's published documentation and its Marketplace listing. A dash means the feature is in neither. If a row no longer matches what an app does, write to hello@oktul.com and we will check it again.

- **JavaScript and TypeScript:** Scripts are written in JavaScript or TypeScript, with completion for the app's own API in the editor. How Code Studio does it: https://oktul.com/docs/plugins/code-studio/scripts/#languages
- **A sandbox that lists the changes:** A test run reads the site for real, records every write instead of sending it, and lists the changes it would have made. How Code Studio does it: https://oktul.com/docs/plugins/code-studio/sandbox-and-production/#sandbox
- **Jira and Confluence in one app:** One installation scripts both products, with the same scripts, triggers and settings. How Code Studio does it: https://oktul.com/docs/plugins/code-studio/install/#choose-a-listing
- **Scripts stay inside Atlassian:** Scripts, runs and logs are kept in the site's Forge storage and run on Atlassian Forge. No server of the app's vendor stores or runs a script. How Code Studio does it: https://oktul.com/docs/plugins/code-studio/privacy/#4-where-the-data-is-stored
- **Rovo agents for scripts:** Rovo agents write a script from a description, convert ScriptRunner Groovy to TypeScript, and debug, optimise and edit scripts. Every draft runs in the sandbox, and a person publishes it. How Code Studio does it: https://oktul.com/docs/plugins/code-studio/rovo/
- **Listeners and schedules:** Scripts run on product events and on schedules, without a person starting them. How Code Studio does it: https://oktul.com/docs/plugins/code-studio/triggers/
- **Scripted fields:** A custom field whose value a script computes. How Code Studio does it: https://oktul.com/docs/plugins/code-studio/fields-and-forms/#scripted-fields

## Price compared with alternatives

USD a month for one Cloud site, single instance, from each app's Atlassian Marketplace pricing on 21.10.2026. Oktul's paid apps are free up to 10 users, and Atlassian bills them on the site's own Atlassian invoice.

The price is set for the listing, which awaits Atlassian's approval, so it cannot be bought yet.

| App | Vendor | Per user, 11–100 users | 100 users | 1,000 users | 10,000 users |
| --- | --- | --- | --- | --- | --- |
| Oktul Code Studio | Oktul | USD 1.85 | USD 185.00 | USD 738.50 | USD 2,808.50 |
| [ScriptRunner for Jira](https://marketplace.atlassian.com/apps/6820/scriptrunner-for-jira) | Adaptavist | USD 2.67 | USD 267.00 | USD 927.00 | USD 4,717.00 |
| [ScriptRunner for Confluence](https://marketplace.atlassian.com/apps/1215215/scriptrunner-for-confluence) | Adaptavist | USD 2.67 | USD 267.00 | USD 927.00 | USD 4,192.00 |
| [Power Scripts](https://marketplace.atlassian.com/apps/43318/power-scripts-jira-script-automation) | Appfire | USD 2.00 | USD 200.00 | USD 890.00 | USD 3,370.00 |
| [Jira Misc Workflow Extensions (JMWE)](https://marketplace.atlassian.com/apps/292/jira-misc-workflow-extensions-jmwe) | Appfire | USD 2.00 | USD 200.00 | USD 888.50 | USD 2,988.50 |
| ScriptRunner for Jira and for Confluence together | Adaptavist | USD 5.34 | USD 534.00 | USD 1,854.00 | USD 8,909.00 |

- Costs less than ScriptRunner for Jira at every size up to 10,000 users.
- Costs less than ScriptRunner for Confluence at every size up to 10,000 users.
- Costs less than Power Scripts at every size up to 10,000 users.
- Costs less than Jira Misc Workflow Extensions (JMWE) at every size up to 10,000 users.

**Why.** One installation covers Jira and Confluence. ScriptRunner sells a Jira app and a Confluence app, so a site that scripts both pays for both, which the last row adds up. Scripts are JavaScript or TypeScript and run on Atlassian Forge inside the site, and the sandbox lists every write before anyone publishes a script.

## For your security review

**CSA STAR Level 1.** This application is listed in the Cloud Security Alliance STAR Registry at Level 1, which is a self-assessment. We completed the CAIQ Lite questionnaire, all 138 questions, and published it for anyone to read.

[Read the assessment on the STAR Registry](https://cloudsecurityalliance.org/star/registry/oktul-ou/services/oktul-code-studio)

## The tests every release has to pass

- **Automated tests:** 1404. Counted on the current build, including the sandbox, licence, logging and authorisation suites.
- **Test suites:** 106. The JavaScript engine, replay, the run consumer, triggers, the console and the manifest.

## Install one listing, for your site's main product

Oktul Code Studio for Jira and Oktul Code Studio for Confluence are one app with the same features. Install the one for the product you work in most, and connect the other. Never install both: two installations share nothing, scripts included.

- **Your site's main product is Jira:** The console opens in Jira. If the site has Confluence too, an organisation administrator connects it to the same installation. Only this listing publishes scripts to Rovo Search.
- **Your site's main product is Confluence:** The console opens in Confluence. If the site has Jira too, connecting it adds Jira's events, the automation action, scripted fields and dynamic forms. Confluence administrators manage Code Studio.

## Installation runs through the product you already administer

1. **Install it for your site's main product** Install one listing: the Jira one on a Jira site, the Confluence one on a Confluence site. A site administrator approves the permissions listed below.
2. **Decide who may use it** Site administrators can use it at once, and the developer groups you add can write scripts and run them in the sandbox.
3. **Write a script and run it in the sandbox** Open Code Studio from the Apps menu, create a script and select Run. The run panel lists what it would change.
4. **Publish it and give it a trigger** An administrator publishes the script and adds a listener, a schedule or an API trigger, or allows it in automation rules.

## Host platform and compatibility

- **Host products:** Jira Cloud and Confluence Cloud
- **Script languages:** JavaScript, TypeScript and AssemblyScript
- **Languages:** English
- **Data residency:** Your site’s, for the app's storage

## The questions other administrators ask most

### Should I install Code Studio for Jira or for Confluence?

The one for your site's main product, and only that one. Both listings are the same app with the same features, so a site with only Jira or only Confluence can install it. Connect the other product to the same installation. Two installations would be two separate Code Studios with no shared scripts.

### Can Rovo write a Jira script from a description?

Yes. Choose Script with Rovo, then Write a new script, and describe what it should do, or hand it exported Jira automation rules. The Rovo author plans the script, writes it as a draft and runs it in the sandbox. You see what it would change before anyone publishes it. It uses your organisation's Rovo AI credits.

### Can Code Studio run my ScriptRunner for Jira Cloud Groovy scripts?

Not as Groovy. Code Studio runs JavaScript and TypeScript. Its Rovo translator converts a Groovy script to a TypeScript draft beside the original and maps ScriptRunner's HAPI calls to the REST calls they make. It checks the draft and runs it in the sandbox, and a person publishes it. A fragment that is not a whole script is reported as not convertible. ScriptRunner Connect scripts run unchanged.

### How do I test a Jira script without changing anything?

Run it in Code Studio's sandbox. The script reads your site for real, and every write it makes is recorded and answered with a simulated response instead of being sent. The run lists each change it would have made. Production runs only scripts a site administrator has published.

### How long can a script run?

About an hour. A Forge invocation lasts at most 900 seconds. Code Studio stops a run 30 seconds before the end and continues it in a new invocation, at most three times. A run that would need a fourth is stopped as runaway. context.checkpoint(state) lets a long loop resume where it stopped.

### Who can write and run scripts?

Site administrators of the app's required product, and members of the developer groups an administrator names. Developers write scripts and run them in the sandbox. Publishing, production runs and triggers stay with administrators, unless an administrator lets developers run published scripts in production as themselves.

### Does Rovo Search find our scripts?

Yes, once an organisation admin connects Code Studio in Atlassian Administration. Every script becomes a document in the Teamwork Graph with Code Studio's own access: the developer groups, and a restricted space's people as well, never the whole site. Group membership is read again every hour. A sync that cannot finish takes out what it was changing, and disconnecting deletes everything Code Studio sent. The connector is in the Jira app only, because Atlassian accepts connectors only from apps installed in Jira.

### Can we use Claude or Claude Code with Code Studio?

Yes, on each person's own Claude plan, with no API key. An administrator turns on Code Studio's tools in Atlassian Administration. Each person adds Code Studio's MCP address to Claude and signs in with their Atlassian account. Claude then reads only what that person may read, and only changes drafts and runs the sandbox. What it reads goes to Anthropic under your agreement with them. Atlassian offers outside assistants as early access.

### Can an AI agent change production?

No. Every agent tool, Rovo's or an outside assistant's, acts as the person and writes drafts or runs the sandbox, where every write is recorded instead of sent. Publishing, production runs, listeners and schedules stay with a person in the console. An agent may start at most ten sandbox runs per person in ten minutes.

### Can a script call any URL?

Only hosts the app declares, and hosts a site administrator has approved in Atlassian's own egress dialog. A connection adds its credential after the script has built the request, so the script never sees it.

### What happens to our data if we uninstall?

Scripted field values stay on their work items. According to Atlassian's documentation, the app's Forge storage (scripts, runs, settings and credentials) comes back if the app is reinstalled within 21 days, and then Atlassian deletes it. Export the configuration first: scripts, triggers, connections and settings in one file, with secrets only inside an envelope sealed with a passphrase.

### Where do I get help?

Raise a request in the Oktul Help Center, or email support@oktul.com. Either way it becomes a request with a reference.

---

## Published by

- Oktul OÜ
- Oktul OÜ · Reg. nr 17589681 · Tallinn, Harjumaa, Estonia
- Email: hello@oktul.com
- Web: https://oktul.com/
- Atlassian Marketplace: https://marketplace.atlassian.com/vendors/534484195
- LinkedIn: https://www.linkedin.com/company/oktul
- YouTube: https://www.youtube.com/@OktulDevelopment
- Estonian: https://oktul.com/et/
