# Tessera Viz — full text > The complete written content of https://viz.tesserify.com, as Markdown, for AI assistants and answer engines. Tessera Viz is a product of PAR2 LABS (https://par2labs.com). The one-line-per-page index is at https://viz.tesserify.com/llms.txt. Generated from the same records the pages render, on 2026-10-20. Images are described, not linked. ## In short **Feel the Data Like Never Before** Graphs, charts, timelines, maps and data grids in one library — one licence, one security review, and it runs wherever your data lives. #### What it solves - Most teams buy four libraries and integrate them themselves. → One library. Click in one view and every other view follows — with no integration work. - Hundreds of third-party packages mean a security review that never ends. → No third-party code at runtime, checked on every build — so the security review stays short. - The graph library that was fine at a thousand nodes has to be replaced at fifty thousand. → It grows from a hundred records to a hundred thousand by changing one setting — not by starting over. - Four vendors, four renewals, four security reviews — and developers paid just to keep them talking to each other. → One vendor, one renewal, one review. And none of that glue code to pay for. #### Why it is different - **81 Chart types, ready to use** — Every chart follows one theme and one set of options — learn one, use them all. - **26 Built-in analyses** — Find the key players, the hidden groups and the shortest routes — in the browser, with no server. - **19 Ways to lay out a network** — From tidy hierarchies to natural clusters — pick the one that tells your story. - **0 Third-party packages to audit** — Nothing extra to audit, patch or pay for. Checked on every build. - **3 Rendering engines, one setting apart** — Grow from a hundred records to a hundred thousand without rewriting a line. - **11 Data sources that plug straight in** — Neo4j, Elasticsearch, GraphQL, CSV and more — connect what you already have. - **16× Faster network layouts** — A 2,000-node network now lays out in 1.7 seconds, down from 26.8. - **$0 Free for your apps, business ones included** — The engine, the renderers, every framework binding, the Admin UI, 26 charts and 8 algorithms. Not open source. - **690 Checks keeping every chart on-brand** — Every one of the 81 charts is tested to follow your theme, so nothing ships off-brand. Built for: Financial crime teams, Cyber security operations, Intelligence analysis, Teams building data-heavy applications. ## The product ### Tessera Viz https://viz.tesserify.com/ Graph Visualization SDK · Beta · v0.8 A visualization library for applications that show connected data: graphs, timelines, maps, charts and grids, from one API, with no third-party runtime dependencies. Graphs, charts, timelines, maps and grids, from one library. Most teams building an application over connected data buy four libraries and integrate them themselves: a graph library for the network, a charting library for the dashboard, something else for the timeline, a grid vendor for the table. Four licences, four theming systems, four upgrade cycles, and a layer of their own code keeping four selections in sync. Tessera Viz is one library. Graph, charts, timeline, map and grid share a data model, a theme, an event model and an export path, so the selection in the graph is the selection in the grid rather than two selections your code keeps aligned. The 31 Community packages import nothing outside the workspace at runtime — a build check fails if an import appears, transitive ones included — which is what makes an air-gapped install a file copy and a security review one review. Rendering follows the data: SVG while every node can be a DOM element, Canvas when there are too many, WebGL when there are far too many, with the same API and the same picture in all three. The free edition covers the engine, the renderers, every framework binding, the Admin UI, 26 charts and 8 algorithms. You may use it in commercial apps. It is not open source. Pro, Enterprise and Organization add the specialist charts, algorithms and grid, AI, collaboration and 3D, per application, with unlimited developers and end users. *Screens — What it draws, board by board.* #### Proof **Numbers from the repository and the test run, not from a brochure.** Stats: - **81** — Chart types, in the same package as the graph engine - **26** — Graph algorithms, run client-side - **19** — Layouts, including structural, lens and tweak - **0** — Third-party runtime dependencies, checked on every build #### Features - **One Library, Five Surfaces** — Graph, charts, timeline, map and grid share a data model, a theme, an event model and an export path. - **No Runtime Dependencies** — The 31 Community packages import nothing outside the workspace at runtime. A build check fails if one appears. - **The Renderer Is A Setting** — SVG while nodes can be DOM elements, Canvas past a few thousand, WebGL past twenty. Same API, same picture. - **26 Algorithms, Client-Side** — Centrality, paths and flow, structure, trees and learning — run in the browser, with the result driving the styling. - **81 Chart Types, One Grammar** — Every chart reads the same data shape, takes the same options and obeys the same theme tokens. - **19 Layouts** — Including structural, which groups nodes by topological role, and tweak, which re-runs without moving what the user knows. #### What it is for - You are building an application over connected data and do not want to integrate four vendors to do it. - A fraud team needs money-mule, structuring and velocity patterns found and then explained to an investigator. - A security team wants CIDR ranges, CVSS severity and threat-intel conventions understood out of the box. - You teach algorithms, and watching Louvain converge a step at a time beats another static slide. - A model emits a Mermaid diagram and you want it rendered properly, not as a picture of a diagram. - You need the whole capability matrix on something you can prove it on before you commit to a licence. #### Specifications - **Surfaces**: Graph · Charts · Timeline · Maps · Grid, from one API - **Renderers**: SVG · Canvas · WebGL, chosen by size - **Scale**: SVG under 2,000 nodes · Canvas to 20,000 · WebGL beyond - **Analysis**: 26 algorithms, client-side - **Layouts**: 19, including structural, lens and tweak - **Charts**: 81 types, one grammar and one theme with the graphs - **Runtime dependencies**: None in the 31 Community packages - **Frameworks**: React · Vue · Svelte · Angular · Web Components - **Data in**: 11 adapters · DOT, Mermaid, GraphML and GEXF parsed - **Export**: PNG · JPEG · SVG · PDF - **Tests**: 3,224 passing across 258 files - **Licence**: Free edition for your own apps, commercial ones included. Not open source. #### Solutions — Built for teams that can't afford to miss a connection. https://viz.tesserify.com/solutions An analyst rarely needs one view. They need the network, the sequence and the geography at once, and today that is usually three tools and a spreadsheet. These are the five disciplines the library was shaped around. Each page is written in that discipline's language rather than ours — the problem as they state it, what the analyst needs to see, and which surfaces do it. **Pick your industry.** Items: - **Financial crime and AML** — See the money move. The account network, the transaction sequence and the counterparty geography, on one selection. To: /solutions/financial-crime Uses: Graph, Timeline, Maps, Grid - **Cyber security** — The blast radius, before it spreads. Asset and identity graphs at WebGL scale, with attack paths and the detections timeline. To: /solutions/cyber-security Uses: Graph, Timeline, Grid - **Intelligence and law enforcement** — Entities, relationships, and when. Entity-link charts, briefing exports, and air-gapped deployment as the headline requirement. To: /solutions/intelligence Uses: Graph, Timeline, Maps - **Supply chain and logistics** — Where it is, where it was going. Map-first, with bundled flows, tracked movement and the dependency graph. To: /solutions/supply-chain Uses: Maps, Timeline, Graph, Charts - **Life sciences** — Pathways, interactions, and lineage. The metabolic pathway and kinship tree layouts exist for this work. To: /solutions/life-sciences Uses: - Graph - Timeline **What buyers ask first.** Items: - **You are new. Why should we bet on you?** — We publish our test counts, our architecture, our roadmap and our limits, and you can read all of it before talking to us. The free edition is a licence, not a trial. It does not expire. - **Do you have customers we can talk to?** — Not yet, publicly. We are early and we will not invent references. What we will give you is a scoped evaluation and direct access to the engineers who built it. Contact us to set one up. - **Really no dependencies?** — Really none at runtime in the Community packages, and a build check fails if an import appears, transitive ones included. Build-time tooling — TypeScript, the test runner, the linter — does not ship. A database adapter uses the driver you already have; we do not bundle it. - **How many nodes can it handle?** — Roughly: SVG to about 2,000, Canvas to about 20,000, WebGL beyond 100,000. Above about 250,000 you should aggregate first, and we give you the clustering to do it. Exact figures depend on your hardware, your data and your styling. - **What happens if you are acquired or shut down?** — The free edition is a licence, not a trial. It does not expire. For paid licences, ask us. - **Is the free tier crippled?** — No. The free edition covers the engine, the renderers, every framework binding, the Admin UI, the grid, the map and the timeline, 26 charts, 8 algorithms and the standard layouts, with unlimited developers, applications and end users. Pro adds the specialist charts, algorithms, grid and layouts; Enterprise adds AI, collaboration, 3D and developer tools. **Two promises, whatever your industry.** Items: - **One selection, not four** — Click an entity in any surface and the others follow it, because the graph, the timeline, the map and the grid share a selection model. There is no synchronising code to write, because there is nothing to synchronise. - **The demos are synthetic, and say so** — Every dataset on this site is generated. A vendor demonstrating on real customer data is telling you something about how it will treat yours, and a vendor demonstrating on data it will not describe is telling you less than it appears to. #### Financial crime — See the money move. https://viz.tesserify.com/solutions/financial-crime An analyst looking at a suspicious transaction needs three things at once: who is connected to whom, when it happened, and where. Today that is usually three tools and a spreadsheet, and the work of holding them together is the analyst's. **Close cases faster, with every clue on one screen.** Items: - **What the analyst gets** — The account network as a graph, the transaction sequence as a timeline, counterparty geography as a map and the underlying rows as a grid — all one selection. Click an account and the timeline shows its transfers, the map shows its counterparties, the grid scrolls to its rows. - **Community detection** — Surfaces structuring rings: the cluster of accounts that move money between themselves more than they move it anywhere else. It is the shape the technique leaves behind, and it is visible before anyone writes a rule for it. - **Betweenness** — Finds the intermediaries. The account that sits on the path between two clusters is the one worth a subpoena, and centrality ranks it without anyone guessing. - **Min-cut** — Finds the chokepoint in a layering chain — the smallest set of transfers whose removal disconnects the source from the destination. - **Tweak layout** — Re-runs the layout while keeping existing positions stable, so a live feed does not scramble the analyst's mental map every time it arrives. An investigation is hours long; the picture has to survive it. - **The compliance angle** — Deploys air-gapped. No telemetry and no phone-home. An SBOM is provided, and the licence is verified locally with a signature rather than a call to us. **Ask in words. Get the network back.** Items: - **What it changes here** — “Show me everything that moved through this account in March, coloured by community” becomes a chart in the chat rather than a ticket to the analytics team. The analyst asks the next question instead of waiting for the first answer. - **A document, not a picture** — The model returns one JSON document — the graph, the layout, the algorithm, the theme — and the library draws it in the page. Nothing renders server-side, so there is no image to regenerate when the next question changes the filter. - **Checked before it draws** — The document is validated first. A field the model invented comes back as a list of issues rather than as a blank panel or a thrown error, which is the difference between an agent that can be trusted in front of an analyst and one that cannot. - **It can arrive as it is written** — The stream reader takes the document while the model is still producing it, so a large graph starts appearing at the first complete object instead of after the last token. - **MCP carries it; this draws it** — Expose that document as the return value of an MCP tool and an agent draws straight into the conversation. The library does not implement MCP, any more than an image decoder implements HTTP — it is the renderer at the end of whichever transport you already run. - **Why this is possible at all** — Because the drawing runs in the browser and takes its instructions as data. A library that renders server-side hands an agent a picture; this one hands it a surface that the next question can change. **See it in other industries.** Items: - **Cyber security** — The blast radius, before it spreads. To: /solutions/cyber-security - **Intelligence and law enforcement** — Entities, relationships, and when. To: /solutions/intelligence - **Supply chain and logistics** — Where it is, where it was going. To: /solutions/supply-chain - **Life sciences** — Pathways, interactions, and lineage. To: /solutions/life-sciences #### Cyber security — The blast radius, before it spreads. https://viz.tesserify.com/solutions/cyber-security An asset graph answers a question an alert cannot: if this host is owned, what else is. The answer is a path, and paths are what graph analysis is for. **From a single alert to the full attack path.** Items: - **What the analyst gets** — Asset and identity graphs, attack-path analysis, a timeline of detections and the alert grid, sharing one selection. Select a host and the timeline shows its detections and the grid shows its alerts. - **Shortest path** — The route in. Given an entry point and a crown-jewel asset, the path is the thing to break, and it is a query rather than a meeting. - **Min-cut** — The chokepoint that closes it. The smallest set of edges whose removal separates the attacker from the target — which is to say, the shortest list of changes worth making. - **Community detection** — The segment that moves together. Where the network says one thing and the traffic says another, the clustering shows it. - **Scale matters here** — An enterprise asset graph is a WebGL graph. It is the same API and the same layouts as the thousand-node view an analyst started on — the renderer changes, the code does not. - **No runtime dependencies** — A security team is the audience least willing to accept a few hundred transitive packages in the browser. The 31 Community packages import nothing outside the workspace at runtime, and a build check fails if one appears. **Ask in words. Get the path back.** Items: - **What it changes here** — An agent triaging an alert can return the attack path itself — the hosts, the identities, the shortest route to the crown jewels — drawn and selectable, instead of describing it in a paragraph the responder then has to picture. - **A document, not a picture** — The model returns one JSON document — the graph, the layout, the algorithm, the theme — and the library draws it in the page. Nothing renders server-side, so there is no image to regenerate when the next question changes the filter. - **Checked before it draws** — The document is validated first. A field the model invented comes back as a list of issues rather than as a blank panel or a thrown error, which is the difference between an agent that can be trusted in front of an analyst and one that cannot. - **It can arrive as it is written** — The stream reader takes the document while the model is still producing it, so a large graph starts appearing at the first complete object instead of after the last token. - **MCP carries it; this draws it** — Expose that document as the return value of an MCP tool and an agent draws straight into the conversation. The library does not implement MCP, any more than an image decoder implements HTTP — it is the renderer at the end of whichever transport you already run. - **Why this is possible at all** — Because the drawing runs in the browser and takes its instructions as data. A library that renders server-side hands an agent a picture; this one hands it a surface that the next question can change. **See it in other industries.** Items: - **Financial crime and AML** — See the money move. To: /solutions/financial-crime - **Intelligence and law enforcement** — Entities, relationships, and when. To: /solutions/intelligence - **Supply chain and logistics** — Where it is, where it was going. To: /solutions/supply-chain - **Life sciences** — Pathways, interactions, and lineage. To: /solutions/life-sciences #### Intelligence — Connect the dots faster — who, what, where and when. https://viz.tesserify.com/solutions/intelligence The product of this work is a briefing, and a briefing has to leave the building. That shapes everything: what the chart can show, what it can export, and where it is allowed to run. **Everything a briefing needs, on one screen.** Items: - **What the analyst gets** — Entity-link charts, combos for grouping, narrative annotations for briefing products, and export to PNG, SVG and PDF for the report that leaves the building. - **Combos** — Group entities into a single node, expand and collapse, and drill down. The grouping is computed over your data rather than baked into it, so a different grouping is a different call and not a different dataset. - **Air-gapped is the headline** — Not a footnote. No third-party runtime dependencies means an install is a file copy and a security review is one review of one codebase. - **Including the map** — Offline tile packs ship with the application, so the geographic view draws from disk. This is the deployment most mapping vendors cannot do, because their renderer phones home. - **Vector export that is really vector** — A PDF that goes into a briefing pack is read at whatever size the reader chooses. Export is geometry, not a screenshot at a fixed resolution. - **An honest limit** — The Canvas and WebGL renderers draw pixels, not elements. For a screen-reader-critical surface use the SVG renderer, or the grid as a table alternative. We would rather say so here than have it found in an accessibility audit. **Ask in words. Get the link chart back.** Items: - **What it changes here** — A briefing product that took an afternoon of layout work becomes a request. The analyst still decides what is true; what goes away is the hour between deciding it and having a chart that shows it. - **A document, not a picture** — The model returns one JSON document — the graph, the layout, the algorithm, the theme — and the library draws it in the page. Nothing renders server-side, so there is no image to regenerate when the next question changes the filter. - **Checked before it draws** — The document is validated first. A field the model invented comes back as a list of issues rather than as a blank panel or a thrown error, which is the difference between an agent that can be trusted in front of an analyst and one that cannot. - **It can arrive as it is written** — The stream reader takes the document while the model is still producing it, so a large graph starts appearing at the first complete object instead of after the last token. - **MCP carries it; this draws it** — Expose that document as the return value of an MCP tool and an agent draws straight into the conversation. The library does not implement MCP, any more than an image decoder implements HTTP — it is the renderer at the end of whichever transport you already run. - **Why this is possible at all** — Because the drawing runs in the browser and takes its instructions as data. A library that renders server-side hands an agent a picture; this one hands it a surface that the next question can change. **See it in other industries.** Items: - **Financial crime and AML** — See the money move. To: /solutions/financial-crime - **Cyber security** — The blast radius, before it spreads. To: /solutions/cyber-security - **Supply chain and logistics** — Where it is, where it was going. To: /solutions/supply-chain - **Life sciences** — Pathways, interactions, and lineage. To: /solutions/life-sciences #### Supply chain — See every shipment, every route, every risk. https://viz.tesserify.com/solutions/supply-chain This is the one discipline of the five that starts on the map rather than the graph. The network still matters — it is where the single points of failure are — but the question usually begins as a geography. **Your routes on a map — and the risks hiding in them.** Items: - **Map-first** — Weighted flows between places, width by volume, with edge bundling that groups parallel routes into visible corridors. Bundling runs in projected world space, so it stays correct at every zoom instead of re-bundling on each pan. - **Tracked movement** — Entities with interpolated positions between samples, and trails behind them. Interpolation is strictly between known samples — we do not invent a position beyond your data, because on a map an extrapolated position is a false claim about where something was. - **Clustering by zoom** — A dense port is one marker labelled with a count rather than four thousand overlapping markers. - **Schedule against actual** — Both on one timeline. Brush a window and the map shows only what moved in it. - **Single points of failure** — The dependency graph, with betweenness over it. The supplier everything routes through is the one the algorithm finds, not the one someone remembered. - **Unplaced data** — Entities with no coordinates go into a side panel rather than at zero-zero in the Atlantic. A missing location is a fact about the data, and it should look like one. **Ask in words. Get the flow back.** Items: - **What it changes here** — “Which routes feed this plant, and what happens if the second tier goes down” comes back as flows on a map with the corridors bundled — a picture of the disruption rather than a list of the parts of it. - **A document, not a picture** — The model returns one JSON document — the graph, the layout, the algorithm, the theme — and the library draws it in the page. Nothing renders server-side, so there is no image to regenerate when the next question changes the filter. - **Checked before it draws** — The document is validated first. A field the model invented comes back as a list of issues rather than as a blank panel or a thrown error, which is the difference between an agent that can be trusted in front of an analyst and one that cannot. - **It can arrive as it is written** — The stream reader takes the document while the model is still producing it, so a large graph starts appearing at the first complete object instead of after the last token. - **MCP carries it; this draws it** — Expose that document as the return value of an MCP tool and an agent draws straight into the conversation. The library does not implement MCP, any more than an image decoder implements HTTP — it is the renderer at the end of whichever transport you already run. - **Why this is possible at all** — Because the drawing runs in the browser and takes its instructions as data. A library that renders server-side hands an agent a picture; this one hands it a surface that the next question can change. **See it in other industries.** Items: - **Financial crime and AML** — See the money move. To: /solutions/financial-crime - **Cyber security** — The blast radius, before it spreads. To: /solutions/cyber-security - **Intelligence and law enforcement** — Entities, relationships, and when. To: /solutions/intelligence - **Life sciences** — Pathways, interactions, and lineage. To: /solutions/life-sciences #### Life sciences — See biology as a system, not a spreadsheet. https://viz.tesserify.com/solutions/life-sciences Two of the 19 layouts exist because this work asked for them. A metabolic pathway is not a force-directed graph that happens to be biological, and a kinship tree is not a dendrogram. **Built for how research teams actually work.** Items: - **Layouts that exist for this** — Metabolic pathway and kinship tree are in the twenty because this work asked for them. So is dendrogram, for hierarchical clustering results you need to show rather than describe. - **Protein interaction networks** — Dense, undirected and large. Community detection over them, with the result driving colour and size directly rather than being written back to a server and re-fetched. - **Clinical timelines** — Events and continuous measures on the same axis, one track per subject, with aggregation from seconds to years. - **Lineage** — Kinship trees where the relationship has a direction and a generation, drawn as a tree rather than settled by a force. - **An honest limit** — Charts here are presentation, not analysis. There is no statistical modelling and no forecasting — compute the numbers, and hand us the numbers. **Ask in words. Get the pathway back.** Items: - **What it changes here** — A model that can already read the literature can return the pathway drawn in the idiom the field expects, so the reader checks a diagram against what they know instead of reconstructing one from prose. - **A document, not a picture** — The model returns one JSON document — the graph, the layout, the algorithm, the theme — and the library draws it in the page. Nothing renders server-side, so there is no image to regenerate when the next question changes the filter. - **Checked before it draws** — The document is validated first. A field the model invented comes back as a list of issues rather than as a blank panel or a thrown error, which is the difference between an agent that can be trusted in front of an analyst and one that cannot. - **It can arrive as it is written** — The stream reader takes the document while the model is still producing it, so a large graph starts appearing at the first complete object instead of after the last token. - **MCP carries it; this draws it** — Expose that document as the return value of an MCP tool and an agent draws straight into the conversation. The library does not implement MCP, any more than an image decoder implements HTTP — it is the renderer at the end of whichever transport you already run. - **Why this is possible at all** — Because the drawing runs in the browser and takes its instructions as data. A library that renders server-side hands an agent a picture; this one hands it a surface that the next question can change. **See it in other industries.** Items: - **Financial crime and AML** — See the money move. To: /solutions/financial-crime - **Cyber security** — The blast radius, before it spreads. To: /solutions/cyber-security - **Intelligence and law enforcement** — Entities, relationships, and when. To: /solutions/intelligence - **Supply chain and logistics** — Where it is, where it was going. To: /solutions/supply-chain #### Live demo — The Tessera Viz demo portal. https://viz.tesserify.com/demo Graph, map, timeline, grid and charts pages; Tessera UI's form fields, dialogs and dashboard parts; five solution dashboards sharing one selection; and an AI analyst that answers with a chart, graph, table, timeline or map. All the data is made up. Graph, map, timeline, grid and charts pages; Tessera UI's form fields, dialogs and dashboard parts; five solution dashboards sharing one selection; and an AI analyst that answers with a chart, graph, table, timeline or map. Open it full screen at /portal/index.html. Frame Title: Tessera Viz — demo portal Hints: - **Tessera UI** — 55 free components - **5 dashboards** — One shared selection - **AI analyst** — Answers as a visual - **Made-up data** — Every page says so **Using the demo, and after it.** Items: - **Demo terms of use** — Made-up data, what you may not do with the demo, and your own AI model key. To: /legal/demo-terms - **Get the developer kit** — The whole library on your own machine, with a one-month trial key. To: /developer-kit #### Gallery — See how your data connects. https://viz.tesserify.com/gallery Maps, networks, timelines, charts and grids from plain JSON, sharing one selection and one time window. Every picture on this page is drawn by Tessera Viz in your browser — no server, and all the data is made up. **A fraud case on a map and a timeline — linked.** — Hover a point on the timeline for its details; click it to find it on the map. Shift-drag on the timeline to pick a time window and the map follows. Switch the same case to a network in one click. Alt-drag on the map to draw a circle. **Networks, flat or in depth.** — 2D: a made-up mule network — six rings of accounts, each tied to a shared device and a cash-out ATM; change the layout. 3D: a data platform of 696 objects across eight tools, orbiting — click a node to hold it and its links. **26 algorithms you can watch think.** — Pick one. It plays step by step on its own example. Pause it, step it, or drag the bar to any point. **81 chart types. One JSON shape.** — The 26 free kinds draw live; the 55 Pro kinds are pictures drawn by Tessera Viz Pro, marked Pro. Filter by the question you want to answer. Click any chart to see it large, next to the complete JSON that draws it. **2,000 transactions. Everything an analyst needs.** — Search everything, filter from any column menu, sort, pin, resize and select. Open a row with › for its story. A trend line in every row. Totals update as you filter. **A look at the paid tiers.** — Orthogonal edge routing, graph diff, series-parallel layout, row grouping and pivot — all in Pro — shown by their results on the same free viewers you have seen above. **More of what it does, by discipline.** #### Security — Fewer moving parts, fewer risks, a faster security sign-off. https://viz.tesserify.com/security Most of what a security reviewer has to read about a visualization library is not the library. It is the few hundred packages underneath it, each with its own maintainers, its own release cadence and its own capacity to change while nobody is looking. The decision to ship none of them is the security posture; everything below follows from it. **What your security team gets.** Items: - **No third-party runtime dependencies** — None in the Community packages, and a check on every build fails if an import appears — transitive ones included. Supply-chain risk is the risk of our code and nobody else's. - **An SBOM with every release** — So a supply-chain review has something to read rather than something to reconstruct. - **Secret scanning in CI** — On every change, because the cheapest credential leak to fix is the one that never reaches a branch. - **Licences verified locally** — Signed with Ed25519 and checked on the machine. There is no phone-home, so an air-gapped deployment is not a special case that quietly stops working. - **No telemetry** — None in the Community or Enterprise runtime. We do not know how many nodes you drew, and we have arranged not to be able to find out. - **Air-gapped deployment** — Documented and supported, including offline map tile packs. It is one of the main reasons the library has no dependencies. **Our certification status, stated plainly.** Items: - **ISO 27001** — We have completed an internal gap assessment against the controls and we publish where we stand. We are not currently certified and we will not claim to be. Certification is a business decision we will make with our first enterprise customers. - **What you can have today** — For a security review, ask us: we will provide the gap assessment, the SBOM and the architecture documentation. - **Why say it this way** — A security reviewer who catches an implied certification stops the deal. One who is told the truth early often becomes the advocate for it inside their own organisation. **Found an issue? Here's how to tell us.** Items: - **Where to send it** — contact@par2labs.com, with "security" in the subject line. Tell us what you found, how to reproduce it and how you would like to be credited. - **What happens next** — It goes to the engineers who wrote the code, not to a queue. We will confirm we have it, tell you whether we can reproduce it, and keep you informed until it is fixed and released. - **What we ask** — Give us a reasonable window to ship a fix before publishing, and do not test against anyone else's deployment. We will not threaten a researcher who follows that. #### Performance — Fast with real data — and you can check it yourself. https://viz.tesserify.com/performance A vendor's benchmark is a claim about the vendor's laptop. What follows is the guidance we are prepared to stand behind — which renderer suits which size, and where the honest ceiling is — and a plain statement of what we will publish, and how you will be able to check it, rather than a table of figures you have no way to verify. **The right engine for every data size.** | Nodes | Renderer | What you get | | --- | --- | --- | | Under 2,000 | SVG | A DOM element per node. CSS, the inspector and screen readers all work. | | 2,000 – 20,000 | Canvas | One element. Full styling, 60fps interaction. | | 20,000 – 100,000+ | WebGL | GPU-drawn, with the same geometry and styling. | | Above ~250,000 | Aggregate first | We give you the clustering to do it. We do not pretend the screen has a million useful pixels. | **Network layouts, now 16× faster.** Items: - **What it was doing** — Every node repels every other node and every link is a spring, which done naively is O(n²) work per tick. The Barnes–Hut tree that avoids this was already in the codebase; the 2D layout had never called it. - **What it does now** — A distant cluster is treated as a single mass at its centre, which turns the inner loop from n into log n. The output is the same layout, reached the same way — this is not a different algorithm, it is the same one no longer doing work it could skip. - **26.8 seconds to 1.7** — Measured on a 2,000-node graph. We publish the measurement rather than the adjective, because "fast" is a claim and a pair of numbers is evidence. - **And it widens** — Four times the nodes now costs about five times the work, where a quadratic loop charged sixteen. The gap is not a constant you can subtract; it grows with every node you add. - **theta, default 0.9** — The accuracy dial, and it is a public option. Lower walks further down the tree and is more exact; higher approximates sooner and is faster. The default is ours; the trade is yours. **How to read these numbers.** Items: - **renderer: auto picks by size** — You do not have to know in advance which band a graph falls into. Every layout, every algorithm and every event works identically in all three, so crossing a band changes the renderer and nothing else. - **Frame time depends on your data** — A heavily decorated graph is slower than a plain one. Density matters as much as count: fifty thousand nodes with four hundred thousand links is a different problem from fifty thousand with sixty thousand. - **A baseline, not a promise** — These bands are where each renderer stops being the right tool on ordinary hardware. They are not a guarantee about yours, and we would rather say so than be quoted back a number we cannot defend. - **Why there is no full table of milliseconds here** — Because you could not reproduce most of it yet. Numbers from a vendor you cannot check are numbers you should not trust — including ours. The force-layout figures above are published because they are a before-and-after on the same machine and the same graph, which is a measurement rather than a boast. When the rest of the benchmark runs publicly we will publish it the same way: hardware named, dataset linked, command to run it yourself. **Why it stays fast as your data grows.** Items: - **One geometry, three renderers** — Shape is a set of pure functions all three call. Nothing is computed twice and nothing drifts, so the WebGL path is not a separate implementation that has to be kept in step. - **Incremental updates** — Add nodes, remove nodes, change properties, and the view animates to the new state rather than redrawing it. A live feed does not cost a full re-layout every time it arrives. - **Analysis in the browser** — Twenty-six algorithms run over the graph you already have. The round trip you are not making is usually larger than any rendering difference. - **Import only what you use** — The packages are separate, so a chart-only application never downloads the graph engine. Per-package gzipped sizes are generated by our build rather than written down by hand. #### Switching — Four vendors, four renewals, and a file nobody wants to own. https://viz.tesserify.com/switch You bought a graph SDK. It works. Then the timeline arrived as a second product, the dashboard needed a charting library and the table needed a grid vendor. Four licences, four theming systems, four renewal dates — and a file in your codebase whose only job is keeping four selections in step. That file has bugs. It always has bugs. Nobody wants to own it. **The hidden cost of stitching four tools together.** Items: - **What is in it** — An effect that pushes the grid's selection into the graph. A second that pushes the graph's back into the grid and on to the timeline — which loops with the first, so there is a guard flag. A third that turns a brushed time range into a filter for the graph and the map, which runs on every frame of the brush, so there is a debounce. - **What else is in it** — The bug you have not found yet. Four components with four opinions about when state settles will disagree eventually, and the disagreement surfaces as a selection that flickers or a filter that does not clear. - **What replaces it** — Nothing. The surfaces share a selection model, so there is no synchronising code, because there is nothing to synchronise. **Two reasons to switch.** Items: - **Delete the glue code** — The strongest one, because it is about your codebase rather than your budget — and you can verify it in an afternoon rather than a procurement cycle. - **One security review instead of four** — Four vendors is four dependency trees, four sets of CVEs and four sets of paperwork. No third-party runtime dependencies and one vendor is a materially smaller review, and the ISO 27001 gap assessment is ready to hand over. **What we won't claim.** Items: - **That your current tool is bad** — You chose it, and it was the right choice for one surface. You now have four surfaces. That is a different question from whether the first answer was wrong. - **That migration is trivial** — A straightforward graph view is typically days. An application with heavy custom rendering is weeks, and the custom drawing is where the time goes. We will do a scoped assessment free, including telling you when it is not worth doing. **Next steps.** Items: - **The comparison** — The capability tables, dated, including the rows where the established vendors are ahead. To: /compare - **Licensing** — Free for your apps, business ones included. Pay per application for the specialist parts. To: /licensing #### Compare — The honest comparison, with the rows we lose. https://viz.tesserify.com/compare The graph visualization market divides into commercial SDKs with strong support, and open-source libraries with broad adoption and no support. We are trying to be a third thing: commercial-grade capability with a free edition you may use in commercial apps. A comparison table where one vendor wins every row is read as marketing and discarded, so the rows where the established vendors are ahead are on this page too. **Against graph visualization tools.** | Capability | Tessera Viz | Commercial graph SDKs | Open-source libraries | | --- | --- | --- | --- | | Graph rendering | SVG, Canvas, WebGL | Canvas / WebGL | Canvas / WebGL | | Layouts | 20 | 10–30 depending on vendor | 5–15 | | Graph algorithms in-browser | 26 | Varies; several are server-side | 10–30 | | Charts in the same library | 81 types | No — separate purchase | No | | Timeline in the same library | Yes | Separate product | No | | Map in the same library | Yes | Separate product or add-on | No | | Data grid in the same library | Yes | No | No | | Third-party runtime dependencies | None | Varies | Several to many | | Air-gapped deployment | Documented, supported | Possible; varies by vendor | Do it yourself | | Vector basemaps | Own renderer, no dependency | Via a mapping library — a dependency | Do it yourself | | 3D | Yes; WebXR on Enterprise | Some vendors | Some | | React / Vue / Svelte / Angular | All four, plus Web Components | React commonly; others vary | Community wrappers | | Accessibility: keyboard navigation | Yes | Varies | Rare | | Accessibility: screen reader | Yes, on the SVG renderer | Varies | Rare | | Maturity and references | New. No public references yet | Established, many named customers | Very large user bases | | Licensing | Free edition for commercial apps (not open source); paid tiers per application | Commercial | Open source | **Where they are ahead.** Items: - **Maturity** — The established vendors have been shipping for over a decade and have named customers in banks and government agencies. We do not, yet. If a reference customer in your exact sector is a requirement, we are not the safe choice today. - **Professional services** — Several offer consultants who will build your application with you. We do not offer that yet. - **Specific depth** — Some vendors have specialised capabilities — particular routing algorithms, particular compliance certifications — that we have not built. Ask us directly and we will tell you straight whether we have it. **Against data grid vendors.** | Capability | Tessera Viz Grid | Established grid vendors | | --- | --- | --- | | Virtualised rows and columns | Yes | Yes | | Row grouping and aggregation | Pro | Yes | | Pivot | Pro | Paid tiers | | Advanced filter builder | Yes | Yes | | In-cell editing | Yes | Yes | | Clipboard and undo/redo | Yes | Yes | | CSV and Excel export | Yes | Yes | | In-cell sparklines | Yes | Paid tiers | | Master / detail | Paid tiers | Paid tiers | | Linked to a graph, map and timeline | Yes | No | | Same theme tokens as your charts | Yes | No | | Third-party runtime dependencies | None | Varies | | Framework support | React, Vue and vanilla | React, Vue, Angular, vanilla | | Ecosystem and maturity | New | Very mature, huge communities | **Where they are ahead, on grids.** Items: - **A decade of edge cases** — A mature grid vendor has ten years of them behind it and an enormous community. If your application is primarily a grid, that matters more than anything in our column — buy the specialist. - **Where ours is strongest** — When the table is one of several linked views of connected data. That is the case we built it for: the grid scrolls to the node you clicked because it is the same selection, not a second one your code keeps aligned. **About this comparison.** Items: - **Reviewed quarterly** — A stale comparison is a legal and reputational problem, not merely an inaccurate one. If you are reading this more than three months after the date above, ask us and we will re-verify before you decide. **Head-to-head, one competitor at a time.** Items: - **vs KeyLines** — The graph SDK, and the three separate products that surround it — timeline, React bindings and map. To: /compare/keylines - **vs AG Grid** — The grid specialist. If your application is primarily a grid, buy theirs — and here is when ours is the better answer. To: /compare/ag-grid - **vs ReGraph** — KeyLines for React, licensed separately. Five bindings over one engine, on one licence. To: /compare/regraph - **vs KronoGraph** — A timeline sold on its own. Ours is not sold separately, because it is not a separate thing. To: /compare/kronograph **What switching really takes.** Items: - **A straightforward graph view** — Typically days. The concepts map closely: nodes and links are nodes and links, a layout is a layout, and the event you were listening for has an equivalent. - **An application with heavy custom rendering** — Typically weeks, and the custom drawing is where the time goes. The renderer is an interface, so bespoke rendering ports rather than being rewritten — but it does have to be ported. - **A scoped assessment, free** — We will look at what you have and tell you what it would take, including telling you if it is not worth doing. An honest no costs us one assessment; a bad migration costs both of us a year. #### Graph — Network views built to find answers, not just to look good. https://viz.tesserify.com/features/graph Lay out a hundred nodes or a hundred thousand. Run 26 graph algorithms over them. Drive colour, size and visibility from the results — in the browser, with no server round trip. **See every connection in your data — and what it means.** — No layout is correct. A force layout says the data clusters; a hierarchy says it flows downward; a radial tree says one thing is the root. Picking one is a claim, which is why the table below starts from the question rather than from the name. Glyph: graph Facts: - **20** — Layouts - **26** — Algorithms - **3** — Renderers - **11** — Adapters **See it in action.** — A mule network in 2D and a data platform in 3D, live — change the layout, or orbit it. Beside it, the 3D scene recorded for anyone who would rather watch than steer, and a second flat graph with its own controls. Panels: - **Network · live** — 2D and 3D Two made-up graphs, drawn by the library in your browser: six rings of accounts, each tied to a shared device and a cash-out ATM, and a data platform of 696 objects across eight tools. In 3D the layout, the camera, the projection and the depth fade are the library's own. Kind: viz Hints: - **Change the layout** — Force, circular, concentric, grid - **Switch to 3D** — 696 objects, orbiting - **Click a node** — Hold it and its links - **Depth of field** — On or off - **3D · recorded** — 700 nodes That is the library running, not an illustration of it: force3dLayout over 700 nodes, the camera and projection from the same package, the depth fade computed per node. Here it orbits on its own; in an application the reader drives it, and the same click, hover and selection work in three dimensions as in two. Kind: video - **2D · live** — Drag it Everything above is a claim about this. It is the shipped library with its own controls, running here — not a recording of one. Kind: demo View: graph2d Frame Title: Tessera Viz — 2D graph demo Hints: - **Drag a node** — And the layout gives way - **Box-select** — Or lasso a region - **Change layout** — One word, animated - **Run an algorithm** — Styling follows the answer **26 algorithms, step by step.** — Pick one. It plays step by step on its own example. Pause it, step it, or drag the bar to any point. **Diagrams from Tessera Viz Pro.** — Orthogonal edge routing, a graph diff and a series-parallel layout — Pro results, drawn by the free viewers. **Find the right view for your data.** Tabs: - **By question** — Start from the question, not the layout name. Block: **Start from the question, not the layout name.** | What you are trying to show | Layout | What it does | | --- | --- | --- | | Natural clustering | force | Related nodes pull together. | | A flow or a process | sequential | Left to right, one level per step. | | A hierarchy | hierarchical · sugiyama | Parents above children, crossings minimised. | | A tree radiating out | radialTree · dendrogram | Root at the centre, or at the left. | | The shape of an unknown network | structural | Groups nodes by the role they play in the topology. | | Detail without losing context | lens | Magnifies a focus, compresses the rest. | | An update, without losing your place | tweak | Re-runs while keeping existing positions stable. | | Everything at once, tidily | grid · circular · concentric | Deterministic, no overlap. | | A biological pathway | metabolicPathway | Built for that idiom. | | A family tree | kinshipTree | Generations and unions. | | Dense clusters, fast | fcose · cola | Constraint-based. | | Depth as information | force3d · sphere · layeredZ | Three dimensions. | - **Layouts** — 19 ways to lay out your network. Block: **19 ways to lay out your network.** — Changing layout is one word, and the graph animates between the two. That is not decoration: watching the same nodes rearrange is how a reader learns that the shape was a choice. Count: 19 LAYOUTS Groups: - **Physics** — Positions emerge from forces. Non-deterministic unless you seed them. Items: force, fcose, cola - **Deterministic** — The same data lands in the same places every time. Items: circular, grid, concentric, random - **Hierarchy** — Direction carries meaning. Items: hierarchical, sugiyama, sequential - **Trees** — One root, and everything measured from it. Items: radialTree, dendrogram, kinshipTree - **Reading aids** — Applied over another layout rather than instead of one. Items: - lens - tweak - **Topology** — Position from the role a node plays, not from its neighbours. Items: - structural - **Domain** — Conventions somebody else already agreed on. Items: - metabolicPathway - **Three dimensions** — Depth as a channel, with the same geometry and styling. Items: force3d, sphere, layeredZ - **Algorithms** — 26 built-in analyses, ready to run. Block: **26 built-in analyses, ready to run.** — All twenty-six run client-side, over the graph already in memory. The round trip you are not making is usually larger than any rendering difference. Count: 26 ALGORITHMS Groups: - **Centrality** — Which node matters, and by which definition of matters. Items: PageRank, Personalised PageRank, Betweenness, Eigenvector - **Paths and flow** — How something gets from here to there, and what would stop it. Items: Dijkstra, A*, Floyd–Warshall, Ford–Fulkerson, Min-cut - **Structure** — The groups nobody labelled. Items: Louvain, Label propagation, Connected components, Tarjan SCC, Spectral, Hierarchical clustering, K-means - **Trees** — The cheapest way to connect everything. Items: - Kruskal - Prim - **Learning** — Classification and inference over the graph you already have. Items: k-NN, k-NN classifier, Logistic regression, SVM, Random forest, Neural forward pass, RNN, Attention - **How it works** — How it works. Block: **How it works.** Items: - **Structural** — Groups nodes by the role they play in the topology, so hubs sit with hubs and leaves with leaves. It is how you see the shape of a network you have never seen before. - **Lens** — Magnifies around a focus node and compresses the rest, so context stays on screen while the detail is readable. - **Tweak** — Re-runs a layout while keeping existing positions stable. When the data updates, the user's mental map survives it. - **The usual pattern** — Run the analysis on a server, write the results back onto your nodes, re-fetch, re-render. Every question costs a round trip, so the user asks fewer of them. - **What happens instead** — The algorithms run in the browser over the graph you already have, and the result maps straight onto a visual channel — size by betweenness, colour by community. Nodes that broker between clusters get bigger; clusters get colours. - **Why the transition matters** — The re-style animates rather than redrawing, so the analytical change is legible. Watching a network re-colour is what tells you what the algorithm found. - **Interaction** — Click, hover, multi-select, box-select, free-hand lasso, drag-to-reposition, pan, zoom, zoom-to-fit, keyboard navigation with a visible focus ring, context menus, and an undo/redo history. - **Visual vocabulary** — Node shapes, halos, donut rings, glyphs, badges, font icons, images, labels with collision-aware placement, arrow styles, curved and bundled links, edge labels, and per-element styling from your own data. - **Combos** — Group nodes into a single combo node, expand and collapse, and drill down. The combo is computed over your data rather than baked into it, so a different grouping is a different call and not a different dataset. - **The naive version** — Every node repels every other; every link is a spring. Done directly that is O(n²) per tick, and it is why force layouts have a reputation for falling over at a few thousand nodes. - **The tree** — A Barnes–Hut tree treats a distant cluster as a single mass at its centre, turning the inner loop from n into log n. It was already in the codebase; the 2D layout had never called it. - **26.8 seconds to 1.7** — On a 2,000-node graph. And the gap widens with every node: four times the nodes costs about five times the work, not sixteen. - **Incremental updates** — Add nodes, remove nodes, update properties, and the chart animates to the new state instead of redrawing it. Links slide, positions ease, and what is already on screen stays where the user left it. - **Getting data in** — 11 adapters, including Neo4j, Gremlin/TinkerPop, TigerGraph, GraphQL, Elasticsearch, CSV, JSON, Graphology, streaming sources and any REST API. Formats: DOT, Mermaid, GraphML and GEXF, with detection of which it has been handed. - **Identity, normalised** — Which is where these integrations actually go wrong — an elementId against a deprecated numeric id, a vertex id colliding across types, a type envelope. The adapter handles it, so your merge logic does not quietly join two different nodes. - **One selection, four views** — Select nodes here and the timeline highlights the events they took part in, the map highlights their locations and the grid scrolls to their rows. **Real output, not mock-ups.** Sets: - **Layouts** — One dataset, eight layouts, no other change. The random baseline is included on purpose — it is what the other seven are an improvement on, and a layout that cannot beat noise is not earning its tick. Items: - **force** — Physics - **circular** — Deterministic - **grid** — Deterministic - **sugiyama** — Hierarchy - **concentric** — Deterministic, by degree - **random** — The baseline - **radialTree** — Trees - **dendrogram** — Trees - **Algorithms** — Each of these is the result of an algorithm driving a visual channel directly — colour by community, size by centrality — rather than a picture drawn to illustrate one. Items: - **PageRank** — Centrality - **Eigenvector** — Centrality - **Louvain** — Communities - **Connected components** — Structure - **Neural forward pass** — Learning - **K-means** — Learning - **Hierarchical clustering** — Learning - **Attention** — Learning - **Styling** — Same nodes, same links, same layout. A decorator is a function from your data to a visual channel, and a theme is a set of tokens — neither is a fork of the renderer, which is why all four themes cost the same to maintain as one. Items: - **No decorators** — The baseline - **Size by degree** — Decorator - **Colour by property** — Decorator - **Halo on a hub** — Decorator - **neon** — Theme - **cyber** — Theme - **min** — Theme - **light** — Theme - **Plugins** — The parts every investigation tool ends up rebuilding. They ship as plugins, so an application that does not want them does not download them. Items: - **Annotations** — Sticky notes on the canvas - **Minimap** — Overview pane - **Stats HUD** — Runtime info - **History** — Undo and redo Cols: 4 **Fine-tune the layout with three settings.** | Option | Default | What it does | | --- | --- | --- | | strength | −30 | Node repulsion. More negative pushes the graph apart. | | distance | 60 | The rest length of a link, in pixels. | | theta | 0.9 | The Barnes–Hut accuracy dial. Lower is more exact and slower; higher approximates sooner and is faster. | **From a hundred to a hundred thousand.** | Nodes | Renderer | What you get | | --- | --- | --- | | Under 2,000 | SVG | A DOM element per node — CSS, the inspector and screen readers. | | 2,000 – 20,000 | Canvas | One element. Full styling, 60fps interaction. | | 20,000 – 100,000+ | WebGL | GPU-drawn, with the same geometry and styling. | **What it won't do yet.** Items: - **Orthogonal link routing** — In Pro, not in the free edition. - **GPU force layout** — Enterprise. The free force layout is CPU, Barnes–Hut accelerated. - **Above ~250,000 nodes** — Aggregate before rendering. We provide the clustering to do it; we do not pretend the screen has a million useful pixels. **Explore the other four tools.** Items: - **Charts** — 81 chart types, all in your brand's style. To: /features/charts - **Timeline** — Replay what happened, and when. To: /features/timeline - **Maps** — Your data on a map, even offline. To: /features/maps - **Grid** — A table that updates with everything else. To: /features/grid #### Charts — 81 chart types. Learn one, and you know them all. https://viz.tesserify.com/features/charts Every chart reads the same data shape, takes the same options and obeys the same theme tokens. Swap bar for waterfall and the chart changes; nothing else does. **Switch chart types without rewriting anything.** — There is no per-chart configuration dialect to relearn on your fourteenth chart, and no second theming system to keep in step with the first. Swap bar for waterfall and the chart changes; nothing else does. Glyph: charts Facts: - **81** — Chart types - **10** — Families - **690** — Style tests - **2** — Token sets **Try it yourself.** — The 26 free kinds draw live; the 55 Pro kinds are pictures drawn by Tessera Viz Pro, marked Pro. Filter by the question you want to answer; click any chart to see it large, next to the complete JSON that draws it. Panels: - **Charts · live** — 81 kinds One JSON shape and one theme draw every chart here — the colours are this site's, passed in as a theme. Swap bar for waterfall and the chart changes; nothing else does. Kind: viz Hints: - **Filter** — By the question you are asking - **Click a chart** — See it large, with its JSON - **Hover a mark** — Read the value **Every chart you'll need, all working the same way.** Tabs: - **Every chart** — The full list — find yours. Block: **The full list — find yours.** — Published as names rather than categories, because a reader with an unusual requirement is scanning for their one chart and a heading will not satisfy them. Several are variants that share a renderer — lollipop is a bar, spline and step are lines, histogram is a bar, bubble is a scatter — which is why the names here outnumber the type count. Count: 10 FAMILIES Groups: - **Comparison** Items: bar, horizontal bar, divergent bar, stacked area, butterfly, dumbbell, dot plot, lollipop, bullet, marimekko, mosaic, waterfall, pyramid, chevron - **Trend over time** Items: line, area, spline, step, sparkline, stream graph, ridge, bump, slope, connected scatter, calendar, punchcard, stripes, cycle, spiral, barcode - **Distribution** Items: histogram, box plot, violin, beeswarm, density, Q–Q plot, percentile, error bar, range, contour - **Part to whole** Items: pie, donut, semi-donut, rose, polar area, waffle, pictogram, treemap, sunburst, icicle, bubble pack, funnel - **Correlation** Items: scatter, bubble, hexbin, heat map, matrix, quadrant, parallel coordinates, radar, ternary - **Flow and relationship** Items: Sankey, alluvial, chord, arc, hive, dendrogram, bracket, fan, ribbon - **Geospatial** Items: - choropleth - vector field - **Financial** Items: candlestick, OHLC, Kagi, Renko - **Indicator** Items: gauge, progress ring, radial bar, KPI card, KPI grid - **Composition** Items: combo, small multiples, timeline - **How it works** — Learn it once. Block: **Learn it once.** Items: - **The chart type is a function** — The options are the same options. There is no per-chart configuration dialect to relearn on your fourteenth chart. - **A theme is a set of tokens** — Not a stylesheet per chart. Point the charts at your existing colour, spacing, radius, typography and motion variables and they stop looking like a charting library. - **81 of 81, checked** — Every renderer honours the shared style system, and 690 behavioural tests hold it there: each chart renders twice, under two themes, and the outputs are required to differ. A chart that quietly ignores your tokens fails the build rather than reaching your dashboard. - **Light and dark** — Two token sets, not two code paths. Contrast ratios are checked in our build, so a theme that fails WCAG AA fails the build. - **Twelve charts are sometimes one chart** — Small multiples render one chart per category on a shared scale, which is the honest way to compare twelve regions and much better than twelve lines fighting over one axis. Combo puts several series types on shared axes when they genuinely belong together. **Real charts, real data.** Sets: - **Charts** — Sixteen idioms, one theme, one data shape. Every one of these is a screenshot of the running build rather than an illustration of it. Items: - **Sankey** — Flow and relationship - **Treemap** — Part to whole - **Radar** — Correlation - **Candlestick** — Financial - **Calendar** — Trend over time - **Stream graph** — Trend over time - **Chord** — Flow and relationship - **Radial bar** — Indicator - **Word cloud** — Indicator - **Sunburst** — Part to whole - **Violin** — Distribution - **Bubble pack** — Part to whole - **Choropleth** — Geospatial - **Gantt timeline** — Composition - **KPI card** — Indicator - **Alluvial** — Flow and relationship **What it won't do yet.** Items: - **Presentation, not analysis** — No statistical modelling and no forecasting. Compute the numbers, and hand us the numbers. - **Very large scatter plots** — Beyond about 100,000 points, bin them — use hexbin or density. We will render 100,000 points; your users cannot see them. **Explore the other four tools.** Items: - **Graph** — See how everything connects. To: /features/graph - **Timeline** — Replay what happened, and when. To: /features/timeline - **Maps** — Your data on a map, even offline. To: /features/maps - **Grid** — A table that updates with everything else. To: /features/grid #### Timeline — See what happened, and when — at any level of detail. https://viz.tesserify.com/features/timeline Pan from a century to a microsecond in one continuous gesture. Events, series and aggregates on the same axis, linked to your graph and your map. **Zoom from years to seconds without losing your place.** — A reader does not know which resolution they need until they are looking at it, so there is nothing to choose in advance: zooming moves continuously between aggregated bands and the individual events inside them, and the transition is animated rather than a redraw. Events and series share the axis, one track per entity, and a playback cursor steps every linked view forward together. Glyph: timeline Facts: - **8** — Aggregation steps - **1** — Track per entity - **4** — Views following the brush **Try it yourself.** — Zoom, and the detail level follows. Brush a range and watch what it filters — here, a map linked to the same timeline. Panels: - **Case · live** — Timeline + map A made-up fraud case: invented accounts, amounts and times over real city positions. The timeline and the map share one selection and one time window, so a window picked on the timeline is the window the map shows. Kind: viz Hints: - **Hover an event** — Its details - **Click it** — Find it on the map - **Shift-drag** — Pick a time window - **Timeline · live** — Zoom it The gesture, the rendering and the event are ours; what a time range means for your data stays yours to decide. Kind: demo View: time Frame Title: Tessera Viz — timeline demo Hints: - **Zoom** — Detail level follows - **Brush a range** — Watch what it filters - **Play it** — A cursor steps through **Turn thousands of events into a clear story.** Tabs: - **Aggregation** — Summarise by the second, the day or the year. Block: **Summarise by the second, the day or the year.** — Zooming does not re-fetch and it does not jump: the transition between an aggregated band and the individual events inside it is animated, which is what stops the reader losing their place. Count: 8 STEPS Groups: - **Steps** — The band a zoomed-out view collapses into. Items: second, minute, hour, day, week, month, quarter, year - **Reducers** — What a band is worth once it has collapsed. Items: count, sum, mean, your own - **On the axis** — Both at once, sharing a scale. Items: discrete events, continuous measures, aggregate bands - **How it works** — How it works. Block: **How it works.** Items: - **Continuous zoom** — Across the whole range, with the detail level changing as it goes — aggregated bands when zoomed out, individual events when zoomed in. The transition is animated, so the user does not lose their place. - **Events and series together** — Discrete events on one track, continuous measures on another, sharing an axis. - **Multi-track** — One track per entity. An investigation of twelve accounts is twelve rows, aligned in time. - **Linked selection** — Brush a time range and the graph shows only what was active in it. Select in the graph and the timeline dims everything else. - **Playback** — Step a cursor through time and watch the linked views update. This is how a sequence of transfers becomes a story. - **Explicit rather than magic** — A range change is an event. You decide what a time range means for your data — which rows it removes, which nodes it hides, which places it keeps. - **What we provide** — The gesture, the rendering and the event. Not an opinion about your domain. **Four ways to show change over time.** Sets: - **Idioms** — The timeline shares its axis and its theme with the time-based charts, so a dashboard that has both does not have two different opinions about what a week looks like. Items: - **Gantt with lanes** — One track per entity - **Calendar heatmap** — A year at day resolution - **Stream graph** — Category over time - **Candlestick** — OHLC series Cols: 4 **Pick a date range — every other view follows.** — Brush a range and the graph shows only what was active in it, the map shows only what moved, and the grid shows only the rows inside it. Not because four components are being kept in step, but because there is one selection and four views of it. Glyph: linked **What it won't do yet.** Items: - **Not a time-series database** — Aggregation happens over data you have loaded. Millions of raw points belong in a query, not a browser. - **No forecasting or anomaly detection** — Those belong upstream. **Explore the other four tools.** Items: - **Graph** — See how everything connects. To: /features/graph - **Charts** — 81 chart types, all in your brand's style. To: /features/charts - **Maps** — Your data on a map, even offline. To: /features/maps - **Grid** — A table that updates with everything else. To: /features/grid #### Maps — Your data on a map — without another mapping vendor. https://viz.tesserify.com/features/maps Web Mercator, raster and vector basemaps, clustering by zoom, tracked movement and edge bundling — with the same nodes, links and styling as the graph view. **Maps that work anywhere, even offline.** — We wrote the protobuf reader, the tile decoder and the canvas renderer. That is an unusual thing to do, and the reason for doing it is the same reason the rest of the library has no third-party runtime dependencies: a map that phones home is a map you cannot ship into an air-gapped network. Glyph: maps Facts: - **0** — Runtime dependencies - **2** — Basemap kinds - **Offline** — Tile packs **See your locations and routes, live.** — A made-up fraud case on the built-in world map, linked to its timeline: pick a place and the timeline follows, scrub the timeline and the map follows. Drag to pan, scroll to zoom, hover for the detail. Panels: - **Case · live** — Map + timeline Invented accounts, amounts and times over real city positions. The world map is built in, so this panel needs no tile server; the timeline below it shares the map's selection and time window. Kind: viz Hints: - **Show as network** — The same case, one click - **Alt-drag** — Draw a circle - **Within 50 km** — A radius query - **No tile server** — The world map is built in **Everything a map needs, and how to choose.** Tabs: - **What it does** — How it works. Block: **How it works.** Items: - **Projection** — Web Mercator, the projection every tile server uses, so our coordinates and your tiles agree. - **Raster basemaps** — Any z/x/y tile server, with subdomain rotation, signed URLs, custom headers — and an offline tile pack you ship with the application. - **Vector basemaps** — Our own vector tile decoder and renderer. We wrote the protobuf reader, the tile decoder and the canvas renderer, so a vector basemap adds no dependency. Tiles restyle without refetching, so dark mode is a token change rather than a new request, and they stay sharp at any zoom. - **Clustering by zoom** — Points collapse into counts as you zoom out, so a dense city is one marker labelled 4,182 rather than 4,182 overlapping markers. - **Movement** — Tracked entities with interpolated positions between samples and trails behind them. Interpolation is strictly between known samples: on a map, an extrapolated position is a false claim about where something was. - **Flows** — Weighted links between places, width by volume, with edge bundling that groups parallel routes into visible corridors. Bundling runs in projected world space, so it stays correct at every zoom instead of re-bundling on each pan. - **Unplaced data** — Entities with no coordinates go into a side panel rather than at zero-zero in the Atlantic. A missing location is a fact about the data, and it should look like one. - **An offline tile pack** — A bundle of tiles keyed by z/x/y that you ship with the application. Point the basemap at it and the map draws from disk. - **Unusually small, for vector** — Vector tiles are a fraction of raster size, and one pack serves every theme. - **Why most vendors cannot do this** — Because their renderer phones home. Ours has nothing to phone. - **Raster or vector** — Which map style suits you. Block: **Which map style suits you.** | | Raster tiles | Vector tiles | | --- | --- | --- | | Where they come from | Any z/x/y tile server | Our own decoder and renderer | | Place names | Baked into the image | Not yet — geometry and styling only | | Restyling for dark mode | A new request to the server | A token change, no refetch | | At any zoom | Resamples between levels | Stays sharp | | Size of an offline pack | Large | A fraction of raster, and one pack serves every theme | | Added dependencies | None — it is an image | None | **Colour regions by your own numbers.** Sets: - **Choropleth** — The only map-side capture we hold today. The basemap, the tile decoder and the offline packs are described above and not yet photographed — when there is a panel for them it goes here, and until then this page says so rather than showing something else. Cols: 2 Items: - **Choropleth** — Polygon regions Alt: Tessera Viz — choropleth over polygon regions **What it won't do yet.** Items: - **No labels on vector basemaps yet** — Our vector renderer draws geometry and styles it; it does not yet place place-names. Raster basemaps have labels baked in. Label placement needs text shaping and a collision solver, and it is on the roadmap. - **No 3D terrain, no globe** — Flat Mercator only. - **Not a GIS** — No topology editing, no spatial joins, no geoprocessing. Visualization and interaction. **Explore the other four tools.** Items: - **Graph** — See how everything connects. To: /features/graph - **Charts** — 81 chart types, all in your brand's style. To: /features/charts - **Timeline** — Replay what happened, and when. To: /features/timeline - **Grid** — A table that updates with everything else. To: /features/grid #### Grid — A data table that stays in sync with everything else. https://viz.tesserify.com/features/grid Virtualised rows and columns, grouping, aggregation, in-cell editing, advanced filters and sparklines — sharing a theme and a selection with every other view. **Most teams buy a data grid separately. Yours is already included.** — It reads the same theme tokens as the charts beside it and answers to the same selection, so it is not a second vendor's component that somebody skinned to match. A grid is where most of this data gets read; it should not be the part of the screen that looks borrowed. Glyph: grid Facts: - **Virtualised** — Rows and columns - **React · Vue** — Bindings - **CSV · Excel** — Export **Try it yourself.** — Search it, filter it, sort it, open a row, edit a cell. The row count is not a performance decision. Panels: - **Transactions · live** — 2,000 rows Two thousand made-up transactions, with a trend line in every row and totals in the status bar that update as you filter. Kind: viz Hints: - **Search** — Every column - **Filter** — From any column menu - **Open a row** — Click › for its story - **Totals** — Follow the filter - **Grid · live** — 5,000 rows Virtualised, so what you are scrolling is a window onto the rows rather than the rows themselves. Kind: demo View: grid Frame Title: Tessera Viz — data grid demo Hints: - **Sort** — Click any header - **Expand** — Click a row - **Edit** — Click an instrument - **5,000 rows** — Virtualised **Grouped, summed, pivoted.** — Row grouping with sums and pivot are both in Pro. Both drawn by the same grid, over made-up amounts. **Everything a data table should do.** Tabs: - **What it does** — Your requirements checklist. Block: **Your requirements checklist.** — Row grouping, pivot tables, tree data, server-side rows and Excel export are in Pro; master/detail and pivot-to-chart are in the paid tiers. The rest of this list is in the free edition. Groups: - **Rendering** — The row count is a number, not a performance decision. Items: - virtualised rows - virtualised columns - **Structure** — Shape the table without reshaping the data. Items: column groups, row grouping, aggregation, pivot, multi-column sort - **Filtering** Items: advanced filter builder, filters panel, side bar - **Editing** Items: in-cell editors, clipboard copy and paste, undo, redo, context menus - **Reading** Items: status bar panels, in-cell sparklines, chart window over the selection - **Fitting in** — The same tokens as every other surface. Items: theme editor, React bindings, Vue bindings, CSV export, Excel export - **How it works** — Select once. Block: **Select once.** Items: - **From the graph** — Click a node and the grid scrolls to it and highlights the row. - **From the grid** — Filter it, and the graph dims what the filter removed. - **From the timeline** — Brush a range, and the grid shows what happened in that window. - **Why there is no synchronising code** — The views share a selection model. There is nothing to keep in step, because there is only one thing. **Select a row — every chart and map follows.** — There is no synchronising code, because the views share a selection model. There is nothing to keep in step, because there is only one thing. Glyph: linked **What it won't do yet.** Items: - **Master/detail and pivot-to-chart** — Enterprise. - **Server-side row model** — Available — but infinite scrolling over a remote source needs an endpoint that supports ranges. **Explore the other four tools.** Items: - **Graph** — See how everything connects. To: /features/graph - **Charts** — 81 chart types, all in your brand's style. To: /features/charts - **Timeline** — Replay what happened, and when. To: /features/timeline - **Maps** — Your data on a map, even offline. To: /features/maps #### UI — The rest of the screen, already built. https://viz.tesserify.com/features/ui Form fields, dialogs, menus, tabs, cards and dashboard tiles that match your charts, because they read the same theme. 55 components free; advanced widgets in Tessera UI Pro. **Your charts are done. The screen around them shouldn't take another quarter.** — Every dashboard needs the same parts around the charts: filters, forms, dialogs, tabs, tiles. Built separately, they take weeks and never quite match. Tessera UI ships them ready-made, in the same theme as the charts, so the whole screen looks like one product. Glyph: ui Facts: - **55** — Free components - **36 KB** — Gzipped, all 55 - **0** — Runtime dependencies **Try it yourself.** — Three real screens made only of the free parts: a sign-in form, a new-client form and a small dashboard. Submit the forms empty, add a client, switch the dashboard's period, then change the look and watch every part follow. Panels: - **Real screens · live** — Form and dashboard Every control on these screens is a Tessera UI part. In the site look they take this site's colours by setting theme tokens; the product's own dark and light are one switch away. The clients are made up. Kind: viz Hints: - **Submit empty** — Fields explain what is missing - **Dashboard** — Search, and switch the period - **Look** — Site, dark or light - **Accent** — One token, every part - **Every part · demo portal** — One page per part The demo portal's own Tessera UI pages: one page for every part, with its properties, events and keyboard use. The free parts are live; the Pro widgets are pictures. Kind: demo Frame Title: Tessera UI — the demo portal's UI pages Embed Css: .topbar,.sidebar,.breadcrumb,.page>header{display:none!important}.app,.shell{display:block!important;height:auto!important;min-height:0!important}main{margin:0!important;padding:0!important;max-width:none!important;width:100%!important}.page{padding:0!important;margin:0!important;max-width:none!important} Hints: - **Free parts** — Live, with a Customise panel - **Pro widgets** — A picture and what Pro adds - **Code** — Properties, events, keys **55 parts free. 19 more in Pro.** — Every part, grouped the way a screen is built, free and Pro pictured the same way. Open one for the live part (a picture for Pro), its code, properties, events and keyboard use. Options, tabs and menu items are drawn inside the part they belong to. **How it fits into your app.** Items: - **One theme for the whole screen** — The parts read the same kind of tokens as the charts. Set the accent, corners or fonts once on a container, and everything inside it follows; a light or dark area is one attribute. - **Any framework** — They are standard web components. Plain HTML and React are tested; Vue, Angular and Svelte use custom elements as they are. - **Real forms** — The fields join a plain HTML form: form data, reset, disabled sections and the browser's own validity check all work. - **Keyboard and screen readers** — Keyboard use and screen-reader roles follow the WAI-ARIA patterns, tested with a real keyboard in a real browser. Right-to-left is supported too. No WCAG certification is claimed. - **Nothing fetched** — No fonts, icons or data are downloaded by the parts, and your page's CSS cannot break them: each draws in its own shadow DOM. - **Install** — From the developer kit: npm install ./packages/tesserify-ui-0.9.0.tgz, then import "@tesserify/ui" once. **What it won't do yet.** Items: - **The advanced widgets** — Date and range pickers, a colour picker, smart selects, the query and form builders, a drag-and-drop dashboard, a command palette, tree view, transfer list, file drop and a notification centre are in Tessera UI Pro. - **A design tool** — It is code you put in your app, themed with tokens. There is no visual page builder. **Explore the five tools it sits beside.** Items: - **Graph** — See how everything connects. To: /features/graph - **Charts** — 81 chart types, all in your brand's style. To: /features/charts - **Timeline** — Replay what happened, and when. To: /features/timeline - **Maps** — Your data on a map, even offline. To: /features/maps - **Grid** — A table that updates with everything else. To: /features/grid #### vs KeyLines — Tessera Viz vs KeyLines. https://viz.tesserify.com/compare/keylines KeyLines is a good product. If a graph is all you need and you want a decade of production history behind it, buy KeyLines — we will say so on a call. This page is for the team that needs a graph and a timeline and a dashboard and a table. **Who this page is for.** Items: - **You already bought a graph SDK** — And it works. Then the timeline arrived as a second product, the dashboard needed a charting library and the table needed a grid vendor. - **Four of everything** — Four licences, four theming systems, four renewal dates — and a file in your codebase whose only job is keeping four selections in step. That file has bugs. It always has bugs. **Side by side.** | | Tessera Viz | KeyLines | | --- | --- | --- | | Graph rendering | SVG, Canvas, WebGL | WebGL | | Layouts | 20 | Published set, comparable | | Graph algorithms in-browser | 26 | Available; some server-side | | Charts | 81 types, same package | Not included | | Timeline | Included | KronoGraph, a separate product | | Map | Included | Separate product or add-on | | Data grid | Included | Not offered | | React bindings | Included | ReGraph, a separate product | | Third-party runtime dependencies | None | Varies | | Air-gapped deployment | Documented, supported | Possible; confirm with them | | Licensing | Free edition for commercial apps (not open source); paid tiers per application | Commercial | | Maturity | New. No public references | Over a decade, named customers | **Where KeyLines is ahead.** Items: - **Maturity** — Over a decade of production use, with named customers in banks and government agencies. We have none, publicly. If a reference in your sector is a requirement, we are not the safe choice today. - **Professional services** — They have consultants who will build your application with you. We do not offer that. - **Specific depth** — Particular routing algorithms, particular certifications. Ask us directly and we will tell you straight whether we have it. **Keeping this current, and what switching takes.** Items: - **Verified, and dated** — Checked against the vendor's published information on 25 September 2026. This page is re-verified quarterly; if you are reading it more than three months after that date, ask us and we will check before you decide. - **Migration** — The concepts map closely: nodes are nodes, a layout is a layout, and the event you listen for has an equivalent. A straightforward graph view is typically days. Heavy custom rendering is weeks, and the custom drawing is where the time goes. - **A free assessment** — We will look at your case and tell you what it would take, including telling you not to bother. An honest no costs us one assessment; a bad migration costs us both a year. **The other comparisons.** Items: - **AG Grid** — The grid specialist, compared honestly. To: /compare/ag-grid - **ReGraph** — KeyLines for React, licensed separately. To: /compare/regraph - **KronoGraph** — The timeline, sold on its own. To: /compare/kronograph - **If you already pay someone** — The glue file, four renewals, and four security reviews instead of one. To: /switch #### vs AG Grid — Tessera Viz Grid vs AG Grid. https://viz.tesserify.com/compare/ag-grid If your application is primarily a grid, buy AG Grid. Ten years of edge cases and an enormous community beat anything in our column. Read on if your table is one of several views of the same connected data. **Side by side.** | | Tessera Viz Grid | AG Grid | | --- | --- | --- | | Virtualised rows and columns | Yes | Yes | | Row grouping and aggregation | Yes | Yes | | Pivot | Enterprise | Enterprise | | Advanced filter builder | Yes | Enterprise | | In-cell editing | Yes | Yes | | Clipboard, undo and redo | Yes | Enterprise for some | | CSV and Excel export | Yes | Excel is Enterprise | | In-cell sparklines | Yes | Enterprise | | Master / detail | Enterprise | Enterprise | | Linked to a graph, map and timeline | Yes | No | | Same theme tokens as your charts | Yes | No | | Third-party runtime dependencies | None | Varies | | Framework support | React, Vue, vanilla | React, Vue, Angular, vanilla | | Ecosystem and maturity | New | Very mature, huge community | **Where AG Grid is ahead.** Items: - **A decade of edge cases** — Every odd keyboard interaction, every screen-reader quirk, every pathological dataset — met and fixed. - **Community** — Thousands of answers already written. Yours will already be there. - **Angular** — First-class. Ours is React and Vue. **Where ours is strongest.** Items: - **When the table is one of several linked views** — The grid scrolls to the node you clicked in the graph because it is the same selection, not a second one your code keeps aligned. - **When it has to belong on the page** — It takes the same theme tokens as the charts beside it, so it does not look like a second vendor's component dropped into your application. - **Verified, and dated** — Checked against the vendor's published information on 25 September 2026. This page is re-verified quarterly; if you are reading it more than three months after that date, ask us and we will check before you decide. **The other comparisons.** Items: - **KeyLines** — The graph SDK, and the three other products around it. To: /compare/keylines - **ReGraph** — KeyLines for React, licensed separately. To: /compare/regraph - **KronoGraph** — The timeline, sold on its own. To: /compare/kronograph - **If you already pay someone** — The glue file, four renewals, and four security reviews instead of one. To: /switch #### vs ReGraph — Tessera Viz vs ReGraph. https://viz.tesserify.com/compare/regraph ReGraph is KeyLines for React, licensed separately. If you have both a React application and a surface that is not React, you are buying twice. **One engine for every framework, one licence.** Items: - **The argument** — ReGraph is KeyLines for React, licensed separately. Two surfaces in two frameworks is two products and two licences. - **What we ship** — React, Vue, Svelte, Angular and Web Component bindings over one engine, on one licence. - **Why that matters beyond the licence** — The bindings are thin. The engine underneath is the same one, so a React component and a Vue component render identically — because they are the same renderer, not two implementations kept in step. - **And the other four surfaces** — Charts, timeline, map and grid are in the same package, sharing the same selection model and the same theme tokens. **Where ReGraph is ahead.** Items: - **Maturity** — It inherits a decade of production history from the engine underneath it. We have none, publicly. - **References** — Named customers in regulated industries. We will not invent any. - **Services** — Consultants who will build the application with you. We do not offer that. - **Verified, and dated** — Checked against the vendor's published information on 25 September 2026. This page is re-verified quarterly; if you are reading it more than three months after that date, ask us and we will check before you decide. **The other comparisons.** Items: - **KeyLines** — The graph SDK, and the three other products around it. To: /compare/keylines - **AG Grid** — The grid specialist, compared honestly. To: /compare/ag-grid - **KronoGraph** — The timeline, sold on its own. To: /compare/kronograph - **If you already pay someone** — The glue file, four renewals, and four security reviews instead of one. To: /switch #### vs KronoGraph — Tessera Viz vs KronoGraph. https://viz.tesserify.com/compare/kronograph KronoGraph is a strong timeline product, sold separately from the graph SDK it pairs with. Ours is not sold separately, because it is not a separate thing. **Side by side.** | | Tessera Viz Timeline | KronoGraph | | --- | --- | --- | | Continuous zoom | Century to microsecond, detail following | Yes | | Multi-track | One track per entity | Yes | | Aggregation reducers | Counts, sums, means and custom | Yes | | Events and series on one axis | Yes | Yes | | Playback cursor | Yes, driving every linked view | Yes | | Linked filtering | Built in — same selection model | Via an integration you write | | Sold as | Part of one library | A separate product | | Licensing | Free edition for commercial apps (not open source); paid tiers per application | Commercial | **The difference a table can't show.** Items: - **Brush a range** — And the graph filters, the map filters and the grid scrolls — not through an integration you wrote, but because they share a selection model. - **Which is also a second product to run** — A second product is a second licence, a second renewal and a second upgrade cycle. It is also a second theming system, which is why the timeline in most applications does not quite match the dashboard beside it. **Where KronoGraph is ahead.** Items: - **Maturity and references** — Years in production, with named customers. We have none, publicly. - **Depth of focus** — Years of work on one surface produces timeline-specific features we have not built. Ask us for a specific one and we will tell you straight. - **Verified, and dated** — Checked against the vendor's published information on 25 September 2026. This page is re-verified quarterly; if you are reading it more than three months after that date, ask us and we will check before you decide. **The other comparisons.** Items: - **KeyLines** — The graph SDK, and the three other products around it. To: /compare/keylines - **AG Grid** — The grid specialist, compared honestly. To: /compare/ag-grid - **ReGraph** — KeyLines for React, licensed separately. To: /compare/regraph - **If you already pay someone** — The glue file, four renewals, and four security reviews instead of one. To: /switch #### Architecture — A five-stage pipeline: adapter, normalise, layout, geometry, render. https://viz.tesserify.com/architecture Adapters reconcile identity into a single graph model; layout computes positions; geometry resolves shape as pure functions shared by every backend; and the renderer — SVG, Canvas or WebGL — is the only stage that touches the output surface. Swapping it is one option, with no effect upstream. **Properties of the layered pipeline.** Items: - **Renderer auto-routing by workload** — Renderer auto-routing means nobody has to know in advance whether this graph is a Canvas graph. The library measures the workload and picks. - **Frame-deterministic algorithm playback** — Algorithm steps are frame-deterministic, so the same graph and seed give the same animation every time — usable for teaching and for regression baselines, not only for demos. - **Mermaid ingestion for model-emitted diagrams** — Mermaid is the syntax language models emit naturally, so importing it is the path from asking for a diagram to having a real, interactive graph. - **Headless SVG and PNG rendering from Node** — The headless package renders SVG and PNG from Node with no browser, so the same code that draws in the page draws in a scheduled job. **Technical specification.** **Next: the security model and the performance envelope.** Items: - **Security and compliance** — What the dependency decision buys, what ships with every release, and exactly where we stand on ISO 27001 — which is assessed, not certified. To: /security - **Performance** — Which renderer suits which size, where the honest ceiling is, and why there is no table of milliseconds on the page yet. To: /performance #### Features — Everything you need to show your data, in one library. https://viz.tesserify.com/features Twenty-six algorithms, 19 layouts, eighty-one chart types and three renderers that read the same geometry — with the domain packs and the assurance a procurement review will ask about. **Explore all five tools, and the one on its way.** Items: - **Graph** — 19 layouts and twenty-six algorithms, run in the browser, with the result driving colour, size and visibility. Combos, incremental updates, 11 adapters and identity normalisation. To: /features/graph Uses: - Graph - **Charts** — Eighty-one types published and grouped, on one grammar and one theme token set. Small multiples, combos, and contrast checked in the build. To: /features/charts Uses: - Charts - **Timeline** — Continuous zoom from a century to a microsecond, events and series on one axis, one track per entity, and playback that steps every linked view forward together. To: /features/timeline Uses: - Timeline - **Maps** — Web Mercator, raster and our own vector renderer so a basemap adds no dependency, clustering by zoom, tracked movement, bundled flows — and offline tile packs. To: /features/maps Uses: - Maps - **Grid** — Virtualised rows and columns, grouping and aggregation, pivot, in-cell editing, filters and sparklines — sharing a theme and a selection with every other view. To: /features/grid Uses: - Grid - **Tessera UI** — Form fields, dialogs, menus, tabs, cards and dashboard tiles in the same theme as the charts. 55 web components free; advanced widgets in Tessera UI Pro. To: /features/ui - **Quantum Viz** — Quantum circuits made visible: gates stepped one at a time, state vectors and Bloch spheres that move with them, and entanglement drawn live as a graph. Marks: Gates, State vectors, Bloch spheres, Entanglement #### Licensing — Free for your apps, business ones included. Pay per application for the specialist parts. https://viz.tesserify.com/licensing The free edition covers the engine, the renderers, every framework binding, the Admin UI, 26 charts and 8 algorithms. You may use it in commercial apps. It is not open source. **Four tiers, and an OEM add-on.** **Tier by tier.** **Common questions.** Items: - **What is actually free?** — The engine, all three renderers, every framework binding, the Admin UI, the MCP server, the grid, the map and the timeline. Also 26 charts, 8 algorithms and the standard layouts. It is free for commercial apps too. There is no expiry, no watermark and no node limit. You sign up to download it. - **Can I use the free edition at work, or in an app I charge for?** — Yes, in your own apps, websites and services, including paid ones. You cannot resell or redistribute the library itself. Selling software with Tessera Viz inside that others install or build on needs the OEM add-on. The [Free Edition Licence](/licence) has the details. - **Is Tessera Viz open source?** — No. The free edition is free to use, but its source code is not published. - **What counts as one application?** — One deployed product with one user-facing purpose. Its staging and development environments are part of it. A second product with a different purpose is a second licence — or move to Organization, which is unlimited. - **Do end users need licences?** — No. The licence covers the application, so both the developers building it and the people using it are unlimited. - **Do you charge per developer?** — No. - **Is there a trial?** — Yes: up to 31 days of every Pro and Enterprise feature, on your own machine. - **How do I pay?** — By bank transfer, against our invoice. - **Can it export GraphML?** — No — import only. The formats package ships parsers for Mermaid, DOT, GraphML and JSON, and writers for SVG, PNG, JSON, vector and paginated PDF, and PowerPoint. We would rather say that plainly than let you find out after buying. - **Is it accessibility certified?** — There is a complete, audit-ready WCAG 2.1 AA self-assessment, and third-party certification has deliberately not been done yet. We are not going to claim a certificate we do not hold. **The terms.** Items: - **Free Edition Licence** — The licence inside every free package, word for word. To: /licence - **Evaluation Agreement** — The terms the trial runs under (version 2026-09-29). To: /legal/evaluation-agreement - **Get the developer kit** — Every package and a trial key for up to 31 days on your own machine, with the documentation. To: /developer-kit #### Free Edition Licence — Tessera Viz Free Edition Licence. https://viz.tesserify.com/licence The licence inside every free Tessera Viz package, word for word. Each package points to this page. Doc: free-edition-licence #### Privacy policy — Tessera Viz privacy policy. https://viz.tesserify.com/privacy What viz.tesserify.com collects, why, how long we keep it, and your rights. This is a draft for legal review. Doc: Updated: 2026-09-30 Updated Label: 30 September 2026 Sections: - P: - This policy covers viz.tesserify.com: the Tessera Viz website, its hosted demo, the developer-kit and trial request form, and the developer portal at viz.tesserify.com/developers. - The company responsible for your personal data is PAR2LABS PRIVATE LIMITED, India ("we", "us"). - For privacy questions and grievances, write to contact@par2labs.com. - P: - We collect only what the forms and the portal need, and what our server records when it delivers the site. Table: | Data | Why | How long | | --- | --- | --- | | Developer-kit and trial request: your name, work email, company name, company website, job title or role, country, the answer to "Will you use Tessera Viz for a business?", what you want to build, the parts that interest you, your front-end stack, expected data size and when you plan to decide; if you give them, your phone number, LinkedIn profile and how you heard about us. With it: the time you ticked the privacy-policy box and agreed to be contacted, the IP address the request came from, and the results of our checks on it (whether you confirmed your email, whether the email is from a free or disposable provider, whether its domain matches the company website, whether the domain has mail records and the website responds). | To review the request, send the kit or trial, and contact you about it. | 30 days. Requests that are rejected, refused or never confirmed are deleted 30 days after they are decided or made; approved requests are deleted 30 days after the trial ends or access is revoked. Their emails, links and download records go with them. | | Agreement acceptance: the version of the Evaluation Agreement you accepted, the date and time, and your IP address. | To prove what you accepted. Section 11 of the agreement says we record this. | Kept with the request, and deleted with it: 30 days after the trial ends. | | Trial record: the name, email address and company a trial was issued to, the email's domain, a normalised form of the email and company name, the trial key's id, and the trial's start and end dates. | To give one trial per person and per company. | Kept without a time limit, including after a request or account is deleted, because this record is what stops repeat trials. | | Developer account (once a request is approved): a hash of the password you set (the password itself cannot be recovered from it), when you signed in, your trial key and its dates. | To let you sign in, and to show you your key, the kit and the documentation. | While your trial runs, and 30 days after it ends or access is revoked. | | Download links and server logs: for each kit download, the time, your IP address and the file; our host's web server logs (IP address, time, the page or file requested); and, for two days, the IP address of each form submission, for the rate limit. | To deliver the kit, and to stop abuse. | Rate-limit records: 2 days. Download records: with the request, as above. Web server logs: kept by our host on its own schedule. | | Paying customers: company, contacts, billing details, and the domains named in the licence key. | To issue and renew licences, and to invoice. | As long as Indian accounting and tax law requires. | | Emails you send us, and the emails we send you about your request (the portal keeps a copy of each email it sends; a copy that carried a one-time link has its text removed once sent). | To answer you. | 30 days after the conversation ends. | | Website analytics and cookies: see section 3. | Only what this site really uses. | Per tool, in section 3. | - P: - The Tessera Viz website uses Google Analytics 4 to count visits and see which pages are read. Google receives the page you are on, the page that referred you, your approximate location derived from your IP address, your device, browser, screen size and language, and a random identifier kept in a cookie. When you send the developer-kit request form, the site also tells Google Analytics that a request was sent. The content of the form is never sent to Google. - If you are in the European Economic Area, the United Kingdom or Switzerland, the analytics cookies are not set until you accept them in the banner. Until then, and if you decline, Google receives only a signal without an identifier or a cookie. Elsewhere, analytics runs when the page loads. Advertising storage is off everywhere; we run no ads. - Our typefaces are loaded from Google Fonts, so your browser asks Google for them and Google sees your IP address. Table: | Name | Set by | What it is for | How long | | --- | --- | --- | --- | | _ga | Google Analytics (cookie) | A random identifier that tells one browser from another. | 2 years | | _ga_74R06G4ZXK | Google Analytics (cookie) | The state of your current visit. | 2 years | | p2l-consent | This site (cookie on .par2labs.com, and browser storage) | Remembers whether you accepted or declined analytics, on every par2labs.com site. | Cookie: 1 year. Browser storage: until you clear it. | | __Host-tvd | The developer portal (cookie) | Keeps you signed in to viz.tesserify.com/developers. Set only when you sign in. | Until you sign out or close the browser; at most 8 hours idle. | | p2l-theme, chakra-ui-color-mode | This site (browser storage) | Remember the colour theme you picked. They never leave your browser. | Until you clear your browser storage. | - P: - The demo at viz.tesserify.com/demo (the demo portal) uses made-up data. - The demo portal itself sets no cookies. The website pages around it use the analytics described in section 3. - It keeps display settings in your own browser only: the tier view you chose, in local storage; the pages you visited and the sandbox graph, in session storage. None of it is sent to us. - The AI analyst: an API key you enter stays only in that page's memory. It is not saved, and it is never sent to us. It is forgotten when you press "Disconnect" or reload the page. - With a key connected, your questions and the demo data go directly from your browser to the provider you chose: Anthropic, OpenAI, or an endpoint you typed in. That provider's terms and privacy policy apply. - Without a key, the demo contacts no one. - The [demo terms of use](/legal/demo-terms) cover the rest. - P: - The Tessera Viz free packages send no usage data, telemetry or personal data to us ([Free Edition Licence](/licence), section 6.1). - If a developer uses the optional map-tiles package with its defaults, their end users' browsers load map tiles from OpenStreetMap and the Leaflet library from a public content delivery network (unpkg.com). The developer can change both. - P: - We use these service providers, and only for what is listed: - Hostinger: hosts the website, the request form's backend and its database, and the developer kit; our emails about your request and trial are sent through Hostinger's mail service. - Google: analytics (section 3) and web fonts. - Cloudflare: not used today. The request form can use Cloudflare Turnstile as an anti-robot check, but it is switched off. If we switch it on, we will name it here first. - Payments: we invoice, and customers pay by bank transfer. No payment provider receives your data from this site. - "Contact us" and "Talk to us" take you to par2labs.com/contact. What you send there is covered by the [PAR2 LABS privacy policy](https://par2labs.com/privacy). - We do not sell personal data. - P: - The request, account, agreement and trial records are stored on our host's servers in Asia and the United States. - This means your data may be stored outside India. Google may also process analytics and font requests outside India. - P: - You can ask us to give you access to the personal data we hold about you, to correct or complete it, and to delete it. Where we rely on your consent, you can withdraw it at any time; this does not undo what was done before. - To use any of these rights, write to contact@par2labs.com. We will answer within 1 day. - To withdraw consent to analytics, decline in the cookie banner or clear the p2l-consent cookie and your browser storage. To withdraw a developer-kit request, or to have your account deleted, write to the contact above. The trial record in section 2 is kept even then, because it is what stops repeat trials. - You can complain to us first, at the contact above. You can also complain to the regulator: in India, the Data Protection Board of India under the Digital Personal Data Protection Act, 2023; in the European Economic Area or the United Kingdom, your data protection authority. - [[Lawyer to confirm the laws that apply: the Digital Personal Data Protection Act, 2023, and the GDPR and UK GDPR if the site accepts visitors from the EU or UK.]] - P: - This site is for professionals. It is not directed at anyone under 18. - P: - The site is served over HTTPS only. - Requests, accounts and trial keys are kept in a database in a private folder on our server, outside the public website. Passwords are stored only as hashes. The key that signs trial keys is kept on the server, outside the public website, and is never part of it. One-time links in emails are stored only as hashes, and download links are signed and last about 10 minutes. The portal's sign-in cookie cannot be read by page scripts and is sent only over HTTPS. - Only the people at PAR2LABS PRIVATE LIMITED who hold an admin account for the developer portal can see the requests. - P: - Last updated: 30 September 2026. - When we change this policy, we publish the new version on this page, change the date above, and email the people subscribed to our updates. #### Get the developer kit — Try every Pro and Enterprise feature for a month, on your own machine. https://viz.tesserify.com/developer-kit Ask for the developer kit: every package, the Admin UI, the MCP server and a starter, with a trial key that unlocks the paid parts for up to 31 days on localhost. We check each request, and you get access to a private portal with the kit, the documentation and your key. **Request the developer kit.** Api: /developers/api Agreement Href: /legal/evaluation-agreement Privacy Href: /privacy Licence Href: /licence Steps Title: What happens next Steps: - **Confirm your email** — We email you a link at once. An address that is not confirmed never gets access. - **We check the request** — Usually within about an hour of confirming. Some requests take a little longer; we will say so. - **Set your password** — The approval email links to the developer portal, where you set a password. - **Kit, docs and your key** — Download the kit, read the documentation, and copy your trial key. It works on your own machine (localhost) for up to 31 days. Sign In: **Already approved? Sign in** (https://viz.tesserify.com/developers/) #### Evaluation Agreement — Tessera Viz Evaluation Agreement. https://viz.tesserify.com/legal/evaluation-agreement Every request for the developer kit and its trial key accepts this agreement. We record the version, the time and the IP address of acceptance. Doc: evaluation-agreement #### Demo terms of use — Tessera Viz demo terms of use. https://viz.tesserify.com/legal/demo-terms The terms for the public demo: the demo pages, the demo portal and its AI analyst. They are a short version of the Evaluation Agreement, plus what applies when you connect your own AI model. To evaluate the software itself, request the developer kit: the Evaluation Agreement applies to it. Doc: demo-terms ## Who makes it PAR2LABS PRIVATE LIMITED — Technology . AI . Strategy . Films. We engineer world-class technology and AI products across intelligence, infrastructure, hardware, and story — designed to make sense, deployed to make a difference. Studio: https://par2labs.com · Contact: contact@par2labs.com (new work) · info@par2labs.com (general) · +91 90591 69238