In the last command, choose Confluence and the same developer site. After that, each major version needs forge install --upgrade for both installations.
Something went wrong
Find the message or the symptom. Each answer says why it happens and how to get going again.
That is expected, not an error. A new scope or supplier host makes a new major version, which you approve. Then each installation has to accept it, like a landlord signing a new licence:
A VPN or company proxy is intercepting HTTPS, and Node does not trust its certificate. Disconnect the VPN and try again. If your company needs a proxy, set it for npm with the values from your IT team:
RunTerminal
npm config set proxy http://proxy.example.com:8080npm config set https-proxy http://proxy.example.com:8080
Check that the app is installed on the site you are looking at (forge install list). Then open a work item and look for the app’s button under the summary: issue panels are added from there, once per work item.
The variable is missing in this environment, or you have not deployed since setting it:
RunTerminal
forge variables set --encrypt API_NINJAS_KEYforge deploy
With forge tunnel running, your laptop runs the code, so the key has to be in your shell as FORGE_USER_VAR_API_NINJAS_KEY. In bash or zsh, read -s FORGE_USER_VAR_API_NINJAS_KEY && export FORGE_USER_VAR_API_NINJAS_KEY asks for it without echoing it.
API Ninjas did not accept the key. Copy it again from your API Ninjas account, set it again with forge variables set --encrypt API_NINJAS_KEY, and deploy.
The supplier is not on the approved list, or the installation is still on the old major version. Check permissions.external.fetch.backend in manifest.yml, then approve and upgrade.
Stop it with Ctrl+C first, then deploy or upgrade, then start it again. Changes to the manifest only reach the site through a deploy, never through the tunnel.
Forge serves static/desk/build, which only exists after a build. Run npm run build:ui, then forge deploy. If it is still blank, check that resources in the manifest points at static/desk/build.
The notes have to name dishes the kitchen agreed to make. Write them plainly (“We will serve pad thai and a miso soup”) and send the menu again. If the logs show a Forge LLM error instead, check that the llm module is in the manifest and that you approved and upgraded after adding it.
The pass checks four things before it hands a dish on: the ticket is in your kitchen space, it has the assign-to-agent label, its status is exactly the one in HANDOFF_STATUS (by default “Approved for Agent”), and it was not handed on before. The log says which check stopped it.
Rovo has to be active on the site, and the installation has to be on the version that added the agent. Deploy, approve and upgrade, then open Rovo Chat and browse agents.
Commands at a glance
Every command the course uses. Run them from the app folder.
Set up
Once per laptop, app or site.
npm install -g @forge/cli@latest
Installs (or updates) the Forge CLI on your laptop. Once, before anything else, and again when the CLI says it is out of date. Never with sudo.
forge --version
Prints the CLI version, which proves the install worked. Right after installing or upgrading the CLI.
forge login
Logs the CLI in with your Atlassian email and an API token. It asks for both. Once per laptop, or when the token expires.
forge whoami
Shows which Atlassian account the CLI is logged in as. After logging in, or when a command says you are not allowed.
forge site provision
Creates a free development site of your own, or shows the one you have. Once, during setup, if you do not have a developer site yet.
forge create
Registers a new app and copies a starter template into a new folder. It asks which template. Once, at the start of Level 1.
forge register
Gives a downloaded copy of the app your own app id. Only if you start from one of the course’s code downloads instead of your own folder.
npm install
Installs the packages listed in package.json. After creating or downloading the app, and after pulling in someone else’s changes.
forge install
Installs the deployed app on one site and product. It asks which. Once per site and product. Later deploys reach it on their own.
forge install --product confluence
Installs the same app on Confluence, on the same site. Once, in Level 2, before the app writes Confluence pages.
forge variables set --encrypt API_NINJAS_KEY
Stores a secret with the app. The CLI asks for the value without showing it. Once per environment, for the supplier key (and the door code in Level 2). Deploy afterwards.
forge variables set KITCHEN_PROJECT_KEY KIT
Stores a setting that is not secret, such as your Jira space key. In Level 2 setup, once per environment. Deploy afterwards.
forge webtrigger create
Prints the URL of a web trigger for one installation. It asks which. In Level 2, lesson 8, to find the delivery door’s address.
After every change
When you edit code, the manifest or the menu desk.
npm run build:ui
Builds the menu desk (Custom UI) into static/desk/build. Before every deploy that changes the menu desk. From Level 2, lesson 1.
forge deploy
Uploads your code and manifest as a new version, to the development environment by default. After every change to code, the manifest or a variable.
forge tunnel
Runs your functions on your laptop while the site keeps calling them. While you work on code, so changes show on refresh without a deploy. Press Ctrl+C to stop.
After a permission change
When the manifest asks for more: new scopes or supplier hosts.
forge deploy --approve MAJOR_VERSION_RULE
Deploys a version that changes permissions, which Forge treats as a new major version. When forge deploy stops because you added a scope or a supplier host.
forge install --upgrade
Moves an installation onto the new major version, so the site grants the new permissions. After an approved deploy. Run it for each product the app is installed on.
Check and debug
Before a deploy, or when something looks wrong.
forge install list
Lists where the app is installed, with the version and environment. When you are not sure the app is on the right site.
forge variables list
Lists the variables of an environment. Encrypted values are hidden. To check a variable is set, and set in the right environment.
forge lint
Checks the manifest and code for problems before a deploy. After every manifest change, and whenever a deploy fails.
forge lint --fix
Adds the scopes your code needs to the manifest. After you call a new product API, before you deploy.
forge logs --since 15m
Shows what your functions logged in the last 15 minutes, including errors. When something did not happen, or happened twice.
Clean up
When you are finished.
forge uninstall
Removes the app from a site. When you are finished with the course.
Words, in one line
Each word is explained properly once, where the course first uses it. Here is the one-line version, its kitchen name, and Atlassian’s own page.
Agent handoffthe pass
When a work item labelled assign-to-agent reaches the “Approved for Agent” status, the app hands it on once.