niiro

Explainer videos that never go stale.

niiro reads your frontend code, rebuilds your interface and explains it. Change something, and the video changes with it.

Made from code, playing on the right

Settings/Approvals
⚑?DW
GeneralApprovalsPaymentsAccountingUsers

Approval policies

Evaluated top to bottom · the first match decides the chain
Audit trailNew policy
PolicyCriteriaApproversMatched 30dStatus
1International wiresPayment type is WireController3Active
2Marketing over $10,000Amount ≥ $10,000 and Department is MarketingXiang Li6Active
3All billsAmount ≥ $1Vendor owner47Active
LedgerlyBuild an approval policy

How it works

Four steps, and the fourth leads back to the first.

You decide what niiro sees. Everything after that runs on its own.

$    $          $     

Step four is step one again. Nothing gets set up twice.

  1. 01

    niiro push

    An allowlist in your config decides which paths leave your machine. Encrypted, scanned for secrets, never built, never executed.

    Or let your coding agent set it up
  2. 02

    Analysis

    niiro maps your components, flows and wording, and reports back what it understood.

  3. 03

    Three proposals

    Concrete videos for your product, built from your real screens. You pick one.

  4. 04

    Next release

    The next push shows which modules went stale. Back to step one, without you starting over.

Examples

Three products, three interfaces, three explainer videos.

Settings/Approvals
⚑?DW
GeneralApprovalsPaymentsAccountingUsers

Approval policies

Evaluated top to bottom · the first match decides the chain
Audit trailNew policy
PolicyCriteriaApproversMatched 30dStatus
1International wiresPayment type is WireController3Active
2Marketing over $10,000Amount ≥ $10,000 and Department is MarketingXiang Li6Active
3All billsAmount ≥ $1Vendor owner47Active

Ledgerly reads your approval policies from the top down, and the first one a bill matches decides who signs off.

Updates

One component changes. The video follows.

niiro knows which source file every scene came from. That is what makes an update cheap.

A commit renames a status.

src/components/StatusBadge.tsx
 const labels: Record<InvoiceStatus, string> = {-  pending: "Needs review",+  pending: "Awaiting approval",   approved: "Approved", };

The hash comparison against the provenance manifests finds the candidates, the model rates each diff.

Overview

  • intro
  • invoice-list
  • filters

Review

  • invoice-detail
  • status-badgevisually affected
  • review-queue

Approve

  • approve-dialogwording affected
  • confirmation
  • outro

Seven modules stay unchanged and keep their scenes, their audio and their render.

Two modules are rebuilt, the chapter marks move.

Overview

0:00

Review

1:04

Approve

2:18 (was 2:12)

Same video, same URL, six seconds longer. Nothing to re-embed.

Two of nine modules new. The rest stays.

That is why niiro bills per module: an update costs what actually changed, not a new video.

Who it is for

You ship every week. A video shoot does not.

Small teams, fast releases, a product that looks different every month. The alternative is not another tool, it is doing it yourself, every time.

Today

  • Record the screen
  • Cut it
  • Record the voice-over
  • Send it out for translation
  • Next release, start over

Half a day per video, once per language.

With niiro

  • niiro push
  • Pick a proposal
  • Approve it
  • Three languages included
  • Next release, it follows

One review, three languages out.

Where it lands

A video is only worth something where people look.

Embed it once. When the product changes, the embed carries the new version.

Ledgerly Docs
Getting started
Invoices
Bulk import
API

Guides / Invoices

Import invoices in bulk

Upload a CSV, map the columns once, approve the run.

EN · DE · ES2:10
Upload
Mapping
Approval
Docs page
Ledgerly
InvoicesVendorsPayments

Step 2 of 4

Approve your first invoice

EN · DE · ES2:10
Skip
In-product onboarding
Ledgerly Changelogv2.14

March 4

Bulk import for invoices

Column mapping is now saved per vendor.

EN · DE · ES2:10
Changelog entry
Ledgerly SupportMara · Support
How do I import 300 invoices at once?
Ninety seconds, chapter 2 covers the mapping:
EN · DE · ES2:10
Support reply
Ledgerly
ProductPricingDocsStart free

Invoices, approved in minutes

EN · DE · ES2:10
Landing page

MP4 · captions per language · chapters · transcript · embed snippet

Control

You decide what niiro sees.

One allowlist in your repo decides what goes up. What is not in it never leaves your machine.

You write the paths.

niiro.yml
project: acme-webinclude:  - src/components/**  - src/app/**  - src/styles/**  - tailwind.config.tsexclude:  - "**/*.test.*"  - "**/__mocks__/**"

Excluded even when a path matches: .env files, lockfiles, keys, anything over 5 MB.

The push tells you what it sent.

$ npx @niiro/cli pushsrc/components/**      112 filessrc/app/**              31 filessrc/styles/**            4 filestailwind.config.ts       1 fileSecret scan (gitleaks): cleanEncrypted with the acme-web keySynced 148 files, 12 uploaded, 2.4s

The project token is write-only. It can push a snapshot, it can never read one.

  • Never

    compiled or bundled
  • Never

    executed, not a single line
  • Never

    used to train models
  • Never

    shared across tenants

Data flow, encryption and deletion periods in detail: trust center

Agent-native

Let your coding agent set it up.

The docs are written for agents. Copy the prompt into Claude Code or Codex.

Setup prompt
Read https://niiro.io/llms.txt first, then set up niiro in this repo.

1. Run `npx @niiro/cli init` and fill niiro.yml with the paths that hold our UI: components, routes, theme and styles. Nothing else.
2. Show me which files that allowlist resolves to.
3. Run `npx @niiro/cli push` and report the file count, the secret scan result and the project id. If the push reports a missing token, stop and ask me to run `npx @niiro/cli login`.

The agent writes niiro.yml, runs the push and reports back. You read nothing.

llms.txt
Curated link list to every documentation page as markdown.
llms-full.txt
The whole documentation in one file, regenerated on every deploy.
niiro-mcp
The same commands as MCP tools, plus video status, affected videos and new orders.

Pricing

Start without talking to sales.

A monthly plan with an allowance, plus credit you top up when you need more.

Estimated launch prices

Trial

0 EUR

no card

  • Analysis of your repo
  • Understood report
  • Short preview of your own app

Starter

49 EUR

per month

  • Around two videos
  • One language
  • Updates included
Recommended

Growth

199 EUR

per month

  • Around eight videos
  • Three languages
  • Embed player
  • CI hook

Scale

599 EUR

per month

  • Around thirty videos
  • All languages
  • Priority in the queue

The monthly allowance expires, top-ups do not. Every expensive run shows an estimate first.

Analysis, report and preview are free. The first finished video is part of Starter.

Questions

What people ask first.

Which frameworks do you support?

Anything that renders to HTML and CSS. React, Next.js, Vue, Svelte and Angular are covered; monorepos are fine because you point at paths, not at a build.

What happens to our code?

It is stored encrypted under a key of its own and read as reference material, never built and never executed. When you cancel, the data goes immediately and the key after seven days.

How close is the replica?

Classes, spacing, colours and fonts are taken over literally from your code. The data in the scenes is invented and fits your domain.

How long does the first video take?

Analysis and proposals within minutes. The first finished video goes through a human review before you see it.

What does an update cost?

Only the modules that actually changed are regenerated, so an update is a fraction of the first run.

Who owns the video?

You do. You can download, host and edit it, including after you cancel.

Can we change the script?

Yes. The transcript is editable, and the voice is regenerated for the changed section only.

What about screens behind a login?

They work, because niiro reads code instead of visiting your app. No credentials are needed.

See what niiro makes of your code.

The analysis, the report and a preview of your own app cost nothing.

Start freeNo credit card.