Nodaro Docs
DocumentationNode ReferenceModelsAI Agents (MCP)DevelopersSelf-hostingResearch

Connect to Nodaro Cloud

Connect a self-hosted Nodaro to a Nodaro Cloud account to run standard models without your own keys and to use the Nodaro-exclusive nodes, billed in credits.

A Nodaro Cloud connection makes Nodaro Cloud one more model provider of your self-hosted install, next to your own keys. Standard models then run through your Nodaro Cloud balance without keys of your own, and the Nodaro-exclusive nodes, which exist only on Nodaro Cloud, work on your install. Usage is billed in credits to the connected Nodaro Cloud account.

What the connection adds

  • A one-click start. Connecting signs you in to Nodaro Cloud, or creates an account. A new account gets the one-time grant of 1,500 credits on its first sign-in: see Free credits. Outputs of a free account carry a watermark until its first credit purchase, which also unlocks every model.
  • Standard models without keys. Image and video generation, speech and the text models run through your Nodaro Cloud balance.
  • The nodes that need a vendor key. AI Avatar, Cinematic Avatar, Relight & Switch, Web Scrape run without their own keys.
  • The Nodaro-exclusive nodes. See The Nodaro-exclusive nodes.
  • No daily spending cap on usage from a connected install.

How much of your generation goes through the connection is your choice: see Choose how the connection is used.

Connect your install

Two accounts are involved, and only two: your server login, which lives in your install's own database, and your Nodaro Cloud account.

Start the connection

On your install, open /setup and click Connect nodaro.ai in step 2. Or open Integrations, find nodaro.ai and click Connect.

Approve on Nodaro Cloud

Your browser opens the Nodaro Cloud consent screen. Sign in or sign up, and approve. The install registers itself with its own OAuth credential and asks for exactly the scopes that generation needs: assets:write workflows:execute jobs:read credits:read.

If that browser is already signed in to Nodaro Cloud, the screen names the account it is about to connect. That is a Nodaro Cloud account, unrelated to your server login. Click Use a different account to connect another one.

Return to your install

You land back on your install with the connection active. The card shows your live Nodaro Cloud balance. A dialog then asks how the connection should be used.

  • One connection per install. The connection belongs to the install, not to a user. Whoever clicks Connect binds the whole install to their Nodaro Cloud account.
  • 90-day token. The token the install receives is valid for 90 days and is not renewed automatically. After that, the card still reads connected, but cloud calls fail with Token expired. Click Disconnect, then Connect again. The install reuses its registration, so this does not count toward the limit on connection attempts.
  • Works right away. The app container fully loads the connection at its next start. Until then, the first job that finds no provider checks the connection again by itself, so a Run right after you connect also works.
  • Stored on the server. The install's credential never reaches your browser. It is encrypted with NODARO_ENCRYPTION_KEY, the same key that protects pasted provider keys. Without that key, the credential is stored unencrypted, and the app logs a warning when you connect.

Choose how the connection is used

Right after you connect, a dialog asks How should nodaro.ai be used? It opens after the Connect button and after you paste an API key. Closing it without a choice applies the preselected options.

  • nodaro for everything (preselected): every capability the connection covers runs through Nodaro Cloud, billed to the connected account. Inside it, you choose who wins when you also have your own keys:
    • nodaro first (preselected): your other provider keys are ignored for what Nodaro Cloud serves, and everything is billed to your Nodaro Cloud account.
    • My keys first: your own providers run what they can, and Nodaro Cloud fills the gaps.
  • Only the Nodaro-exclusive nodes: only the Nodaro-exclusive nodes use the connection. Everything else behaves as if the connection did not exist, with two exceptions described below.

To change the choice, make a new connection: click Change key on the nodaro.ai tile, or Disconnect and then Connect on the connection card. The dialog opens again. There is no separate control. Scripts can call PUT /v1/nodaro-connect/prefs with { "scope": "all" | "exclusives", "precedence": "nodaro" | "local" } from a signed-in editor session, as an admin on the Business edition.

Two rules keep routing predictable:

  • Earlier connections keep their routing. Installs connected before this dialog existed keep running everything with My keys first until someone opens the dialog. Routing never changes silently.
  • nodaro first also covers the vendor nodes. Under nodaro first, the avatar, relight, web scraping and transcription nodes run through Nodaro Cloud even when you hold that vendor's key. Under My keys first, your vendor key wins.

Which nodes use the connection

Nodes that call a vendor directly

Some nodes do not go through the model router: their handlers call a vendor. These nodes are:

On a connected install with no key for that vendor, the worker runs the job on the same route of your Nodaro Cloud account. It then copies the finished result into your own storage and records it as a local job. The HeyGen avatar and voice pickers list Nodaro Cloud's catalog the same way.

Your routing choiceWith the vendor's keyWithout the vendor's key
nodaro firstNodaro CloudNodaro Cloud
My keys firstYour keyNodaro Cloud
Only the Nodaro-exclusive nodesYour keyThe node cannot run

Suno and Generate Script ignore the routing choice. With your own key, they always run locally: KIE_API_KEY for Suno, and KIE_API_KEY, ANTHROPIC_API_KEY or GEMINI_API_KEY for Generate Script. Without one, they always run on the connection. These are the two exceptions under Only the Nodaro-exclusive nodes.

Text nodes

Text nodes such as Prompt, Choose Best, Describe Image, QA Check, Motion Graphics, Lottie Overlay, 3D Title and the picker analyzers call a text model directly. This works the same when the node runs alone or inside a workflow.

  • Without a text model key, meaning no KIE_API_KEY, ANTHROPIC_API_KEY or GEMINI_API_KEY, the request goes to the same route of your Nodaro Cloud account. The answer is recorded as a job in your own database, so it appears in your run history, and its job ID works on your install. IDs that only mean something on your install, such as workflow and node IDs, never leave it.
  • With a text model key, the node follows your routing choice: under nodaro first Nodaro Cloud answers, and under My keys first your key does.

Local processing

Video and audio editing nodes that run on ffmpeg always run on your server. Only the transcription step of the caption nodes follows the same rule as Transcribe.

The Nodaro-exclusive nodes

Some nodes are implemented only by Nodaro Cloud, such as Generate Video Pro, Edit Video Pro, Voice Changer Pro, Video Analysis and AI Audit. On a self-hosted install, they appear in the editor with a NODARO mark and run through your connection, with the same features as on Nodaro Cloud. That includes Stop & keep and Continue in Generate Video Pro.

  • Not connected? The nodes still appear, and the node shows a Connect nodaro.ai button. A run fails with 503 nodaro_connection_required and the same instruction. A workflow that contains them always saves: the check happens only at run time.
  • Billing. Runs are billed to the connected Nodaro Cloud account. With the Connect button, the monthly cap of the install applies. With a personal API key, the account is used as itself. A free account keeps its standard limits and watermark until its first purchase, and no cap per install applies.

The Story → Video pipeline is available only on Nodaro Cloud. It is an interactive engine, not a node that a connection can relay.

Or use an API key, like any other provider

Nodaro Cloud is also a provider in the ordinary sense, with a tile on /setup like any other. To skip the OAuth flow:

  1. On app.nodaro.ai, open Settings › API and create a personal API token.
  2. On your install, paste it on the nodaro.ai tile. It applies at once, shows key set (app), and can be changed or removed like any pasted key. The routing dialog opens after the paste.

For a headless install or infrastructure as code, set it in .env instead and restart the app container:

NODARO_API_KEY=ndr_...

Either way, generation runs through the Nodaro Cloud account that owns the token, following your routing choice.

Connect button (OAuth)Personal API key
Spend cap per installYes, set on Nodaro CloudNo
Listed under Connected InstancesYesNo
ExpiresAfter 90 daysNever
RevokeDisconnect on Nodaro CloudDelete or deactivate it under Settings › API

A personal API token has no scope, no spend cap and no expiry, and an account can hold at most 10. It can spend credits, but it can never buy credits, allocate allowances or administer the account. When an install has both, it uses the OAuth connection.

Manage connected installs on Nodaro Cloud

On app.nodaro.ai, open Billing › Connected Instances. The account owner sees every connected install with its spend this month, and can:

  • Set a monthly spend cap per install, from 100 to 1,000,000 credits, or leave it empty for no cap. It saves automatically. Past the cap, the install's runs fail with 402 instance_cap_reached.
  • Disconnect an install. Its tokens stop working at once.

Disconnect on your install only forgets the local token. The install keeps its registration, so the next Connect reuses it. To cut access completely, disconnect it on Nodaro Cloud.

When connecting fails

  • Nodaro Cloud is not accepting connections, or cannot be reached. The button says so in place, with cloud_connect_unavailable when connections are closed. This comes from Nodaro Cloud or your network. Your own provider keys, including a NODARO_API_KEY, keep working.
  • Too many unfinished connection attempts from this address in the last 24 hours. Each click on Connect registers the install with Nodaro Cloud, and registrations that nobody approved expire after a day. After 10 of them from one address in a day, Nodaro Cloud pauses that address. Finish the consent window you already opened, or wait. Pasting your own provider key works in the meantime. Connecting again after a Disconnect does not count.
  • Cloud calls fail with Token expired. The 90-day token ran out. Click Disconnect, then Connect.
  • The consent screen never returns to your install. Set PUBLIC_URL to your install's real address. The OAuth callback is registered as <PUBLIC_URL>/v1/nodaro-connect/callback.

Configuration reference

VariableWhat it does
NODARO_CLOUD_URLThe Nodaro Cloud host to connect to, and where calls with NODARO_API_KEY go. Default https://app.nodaro.ai. Read at boot.
NODARO_API_KEYA personal API token from app.nodaro.ai, Settings › API: Nodaro Cloud as a plain provider, with no OAuth flow. The OAuth connection wins when both exist.
PUBLIC_URLYour install's public address. The compose file defaults it to http://localhost:3000. Keep it set: when it is empty, it falls back to https://app.nodaro.ai, and the consent screen can never return to your install.
R2_SHARED_WITH_RELAY_TARGETDefault false. Set true only when R2_PUBLIC_URL names the same bucket that the Nodaro Cloud host writes to. Results from the connection are then used in place instead of copied. They are never deleted by your install and do not count toward its storage quota. Only true and 1 enable it.

R2_SHARED_WITH_RELAY_TARGET also changes the Save to Storage node: when its input is already an object in the bucket, it stores a reference instead of a copy. Deleting that input's library item then deletes the object the saved item points to. The compose file does not pass this variable from .env: add it under environment: of the nodaro service.

Frequently asked questions

Last updated on

On this page