Open source · Reporting as Code

Reporting as Code. Strictly IBCS®.

Write a report as YAML and SQL. bino renders it as an IBCS PDF. The files live in Git, so every change is reviewed and every report can be built again.

The tutorial runs in your browser. It takes you from your first manifest to a PDF, with no install.

bino-bi/bino-cli6$ brew install bino-bi/tap/bino-cli

Projects

One workflow, three projects

bino cli is open source under AGPL-3.0. The sandbox and the registry are free hosted services around it.

bino cliOpen source

IBCS reports from YAML + SQL

$ brew install bino-bi/tap/bino-cli

Report-as-code runtime in the browser

Share report definitions with the community

$ bino registry add @acme/base-layout

From YAML to PDF

Define. Build. Ship.

A data source, a query and a table. On the left is the file of a real sandbox, on the right is what it rendered. bino build makes the same output on your laptop and in CI.

report.yamlyaml
apiVersion: bino.bi/v1alpha1
kind: DataSource
metadata:
  name: new_cities
spec:
  type: csv
  path: https://sandbox.bino.bi/api/data/new_cities.csv
  delimiter: ";"
---
apiVersion: bino.bi/v1alpha1
kind: DataSet
metadata:
  name: new_cities_ds
spec:
  query: |-
    SELECT *
    FROM new_cities
    WHERE year(date) = 2025
    OR year(date) = 2024
  dependencies:
    - new_cities
---
apiVersion: bino.bi/v1alpha1
kind: Table
metadata:
  name: cities_table
spec:
  dataset: new_cities_ds
  type: sum
  sumTitle: Revenue by city
  scenarios:
   - ac1
   - pp1
  variances: ["dpp1_ac1_pos"]
  barColumns:
   - "dpp1_ac1_pos"
  interval: year
  unitScaling: 20
A rendered IBCS table: revenue by city for 2024 and 2025, with prior-year and actual columns and a variance bar per row.
The whole sandbox file, and what it rendered.Open this sandbox
Quick install:$ brew install bino-bi/tap/bino-cli

Agentic reporting

An agent writes the report. bino checks it.

A bino report is plain YAML and SQL, so an AI agent can write it. bino mcp gives the agent tools to read your data, check every draft and render the result. The IBCS rules stay the same. The agent is one more way to write the report.

This video shows a real run: an agent built an IBCS report from a CSV file with only the bino tools, and a person reviewed the PDF twice.See the prompt, the reviews, every tool call and the PDFs →
  1. 1validate_draft

    Check the draft

    The agent writes a manifest. bino validates it against the schema in memory, before anything is saved.

  2. 2write_manifest

    Write it

    bino validates the manifest again and only then writes it to disk.

  3. 3get_rows

    Check the numbers

    The agent queries its own DataSet and compares the rows with what the page should say.

  4. 4build

    Render the PDF

    The same bino build as on your machine. The PDF is what you review.

Plugins · early access

Extend bino with plugins

A plugin adds data sources, visual components, lint rules, pipeline hooks or commands to bino. You write it in Go with the plugin SDK (Apache-2.0). The SDK is at v0.0.x, so the API can still change.

Need help running bino in your team? See services →

Questions about bino?

Write to us about your reports, a bug, or working together.