Version Control Your Data
Reports are code. Git diff your analytics. Review changes before deployment. Audit every calculation modification.
We built a BI tool that thinks like an engineering team.
Version Control Your Data
Reports are code. Git diff your analytics. Review changes before deployment. Audit every calculation modification.
C-Level Performance
Achieve Tens of Millions of Rows per Second throughput. The C core executes full-scan analytical queries on billion-row datasets in under 30 seconds on standard hardware, leveraging native memory efficiency.
See the Test
Deploy Anywhere
Lightweight C core (< 5MB). Embeddable in any application via C API or Lua bindings. Perfect for SaaS, Edge, and IoT.
Developer-First UX
Markdown-inspired .lcore syntax and Lua scripting for complex logic. Ship analytics faster without drag-and-drop complexity.
Zero External Dependencies
Self-contained runtime. No database lock-in. Just the core C engine and Lua runtime.
Open Source Forever
Core engine is MIT licensed. Built by and for the community.
Analytics should be auditable, readable code. The LunivCore DSL lets engineers write reports with clean, minimal syntax.
Write analytics-as-code using our new language, lcore:
dataset Sales "Q1 Revenue by Region" { APAC: 2850000 Americas: 3450000 EMEA: 1920000}
plot Sales as bar┌─ Q1 Revenue by Region├───────────────────────────────────────────────────────────────── APAC │ ████████████████████████████████ (2850000) Americas │ ███████████████████████████████████████ (3450000) EMEA │ ██████████████████████ (1920000)└───────────────────────────────────────────────────────────────── text "Exploratory Analysis With LunivCore"
text "Process Data"
dataset regional_sales "Journal #1 Data (Sales $)" { Midwest: 1124 Northeast: 2545 West: 728 South: 1954 Texas: 1720 California: 2140 }
text "First, we need to get some basic statistics."
sum regional_sales avg regional_sales min regional_sales max regional_sales count regional_sales
text "Now let us visualize the data distribution"
plot regional_sales as bar┌─ Note Exploratory Analysis With LunivCore└──────────────────────────────────────────────────────────────────────────────┘
┌─ Note Process Data└──────────────────────────────────────────────────────────────────────────────┘
┌─ Journal #1 Data (Sales $) Raw Data Midwest │███████████████ 1124 Northeast │███████████████████████████████████ 2545 West │██████████ 728 South │██████████████████████████ 1954 Texas │███████████████████████ 1720 California │█████████████████████████████ 2140└──────────────────────────────────────────────────────────────────────────────┘
┌─ Note First, we need to get some basic statistics.└──────────────────────────────────────────────────────────────────────────────┘Sum(regional_sales) = 10211Avg(regional_sales) = 1701.83Min(regional_sales) = 728Max(regional_sales) = 2545Count(regional_sales) = 6
┌─ Note Now let us visualize the data distribution└──────────────────────────────────────────────────────────────────────────────┘
┌─ regional_sales bar Value Distribution Midwest │█████████████████ 1124 Northeast │████████████████████████████████████████ 2545 West │███████████ 728 South │██████████████████████████████ 1954 Texas │███████████████████████████ 1720 California │█████████████████████████████████ 2140└──────────────────────────────────────────────────────────────────────────────┘Build complex, reusable logic in Lua:
print("\n>>> Integrated Dashboard View\n")BI.render_view({ title = "EXECUTIVE DASHBOARD", rows = { {name = "Total Revenue", value = 12500}, {name = "Profit Margin", value = 3750}, {name = "Customer Count", value = 850}, {name = "Market Share", value = 2340}, }})>>> Integrated Dashboard View
┌─ EXECUTIVE DASHBOARD Container Total Revenue : 12500 Profit Margin : 3750 Customer Count : 850 Market Share : 2340 └───────────────────────────────────────────┘print("\n>>> Performance Metrics\n")BI.chart("table", { {name = "Response Time", value = 45}, {name = "Uptime %", value = 9999}, {name = "Users", value = 1250}, {name = "Requests/sec", value = 320},})>>> Performance Metrics
┌─ chart table ┌───────────────────────────────────────────────────────────┬───────────────┐ │ Metric │ Value │ ├───────────────────────────────────────────────────────────┼───────────────┤ │ Response Time │ 45 │ │ Uptime % │ 9999 │ │ Users │ 1250 │ │ Requests/sec │ 320 │ └───────────────────────────────────────────────────────────┴───────────────┘└──────────────────────────────────────────────────────────────────────────────┘-- Test 1: Sales Dashboardprint("\n>>> Sales Performance Dashboard\n")local sales = BI.new("Q3 2024 Sales")sales:add("North", 2500)sales:add("South", 1800)sales:add("East", 3200)sales:add("West", 2900)sales:chart("bar")
-- Test 2: Product Distributionprint("\n>>> Product Distribution\n")BI.chart("pie", { {name = "Product A", value = 15000}, {name = "Product B", value = 23000}, {name = "Product C", value = 18000}, {name = "Product D", value = 27000},})>>> Sales Performance Dashboard
┌─ chart bar Value Distribution North │███████████████████████████████ 2500 South │██████████████████████ 1800 East │████████████████████████████████████████ 3200 West │████████████████████████████████████ 2900 └──────────────────────────────────────────────────────────────────────────────┘
>>> Product Distribution
┌─ chart pie Share of Total (n=83000) ████ 18.1% │ Product A ██████ 27.7% │ Product B █████ 21.7% │ Product C ████████ 32.5% │ Product D └───────────────────────────────────────────┘Perform exploratory analysis and create data journals with Lua or lcore:
BI.text('Exploratory Analysis With LunivCore')
BI.text('Process Data')print('→ loading data...')
local data = BI.new('Journal #1 Data (Sales $)')data:add("Midwest", 1124)data:add("Northeast", 2545)data:add("West", 728)data:add("South", 1954)data:add("Texas", 1720)data:add("California", 2140)
print('✓ finished loading data...\n')
BI.text('First, we need to get some basic statistics.')
print('Computing statistics...\n')print(string.format(' Total Sales: $%d', data:sum()))print(string.format(' Average Sales: $%.2f', data:avg()))print(string.format(' Min Sales: $%d', data:min()))print(string.format(' Max Sales: $%d', data:max()))print(string.format(' Regions: %d\n', data:count()))
BI.text('Now let us visualize the data distribution')
print('Rendering bar chart...')data:chart('bar')
print('Rendering second chart...')data:chart('pie')
print('Rendering table...')data:chart('table')
BI.text('Key Findings')
print('\nAnalysis Summary:')print(string.format(' • Top Region: California ($%d)', data:max()))print(string.format(' • Lowest Region: West ($%d)', data:min()))print(string.format(' • Standard Coverage: %d regions analyzed', data:count()))print(string.format(' • Revenue Range: $%d', data:max() - data:min()))print(string.format(' • Average per Region: $%.0f\n', data:avg()))
BI.text('Conclusion')
print('The regional sales data shows:')print(' - Northeast leads with $2,545 in sales')print(' - California performs well at $2,140')print(' - West region has lowest sales at $728')print(' - Significant variance across regions suggests targeted marketing opportunities')print()┌─ Note Exploratory Analysis With LunivCore└──────────────────────────────────────────────────────────────────────────────┘
┌─ Note Process Data└──────────────────────────────────────────────────────────────────────────────┘→ loading data...✓ finished loading data...
┌─ Note First, we need to get some basic statistics.└──────────────────────────────────────────────────────────────────────────────┘Computing statistics...
Total Sales: $10211 Average Sales: $1701.83 Min Sales: $728 Max Sales: $2545 Regions: 6
┌─ Note Now let us visualize the data distribution└──────────────────────────────────────────────────────────────────────────────┘Rendering bar chart...
┌─ chart bar Value Distribution Midwest │█████████████████ 1124 Northeast │████████████████████████████████████████ 2545 West │███████████ 728 South │██████████████████████████████ 1954 Texas │███████████████████████████ 1720 California │█████████████████████████████████ 2140└──────────────────────────────────────────────────────────────────────────────┘Rendering second chart...
┌─ chart pie Share of Total (n=10211) ██ 11.0% │ Midwest ██████ 24.9% │ Northeast █ 7.1% │ West ████ 19.1% │ South ████ 16.8% │ Texas █████ 21.0% │ California└──────────────────────────────────────────────────────────────────────────────┘Rendering table...
┌─ chart table ┌───────────────────────────────────────────────────────────┬───────────────┐ │ Metric │ Value │ ├───────────────────────────────────────────────────────────┼───────────────┤ │ Midwest │ 1124 │ │ Northeast │ 2545 │ │ West │ 728 │ │ South │ 1954 │ │ Texas │ 1720 │ │ California │ 2140 │ └───────────────────────────────────────────────────────────┴───────────────┘└──────────────────────────────────────────────────────────────────────────────┘
┌─ Note Key Findings└──────────────────────────────────────────────────────────────────────────────┘
Analysis Summary: • Top Region: California ($2545) • Lowest Region: West ($728) • Standard Coverage: 6 regions analyzed • Revenue Range: $1817 • Average per Region: $1702
┌─ Note Conclusion└──────────────────────────────────────────────────────────────────────────────┘The regional sales data shows: - Northeast leads with $2,545 in sales - California performs well at $2,140 - West region has lowest sales at $728 - Significant variance across regions suggests targeted marketing opportunitiesCreate modular dashboards for KPIs and trends:
-- Create datasets dynamically and aggregate values local regions = {"North", "South", "East", "West"} local q1_values = {340, 210, 210, 450} local q2_values = {400, 190, 220, 470}
local q1_ds = BI.new("Q1 Aggregation KPIs") local q2_ds = BI.new("Q2 Aggregation KPIs")
-- Populate datasets using loops for i, region in ipairs(regions) do q1_ds:add(region, q1_values[i]) q2_ds:add(region, q2_values[i]) end
q1_ds:chart('bar') q2_ds:chart('bar')
-- Perform basic analytics BI.text("Q1 Total:" .. q1_ds:sum() .. '\n ' .. "Q2 Total:" .. q2_ds:sum() .. '\n ' .. "Difference Q2-Q1:" .. q2_ds:sum() - q1_ds:sum())
-- Combine datasets into a single view local market_view = { title = "Quarterly Market Share Comparison", rows = {}, children = {} }
for i, region in ipairs(regions) do table.insert(market_view.rows, { name = region, value = q2_values[i] }) end
BI.render_view(market_view)
-- Final summary BI.text("Contact Luniv Technology for assistance with your dashboard.")┌─ chart bar Value Distribution North │██████████████████████████████ 340 South │██████████████████ 210 East │██████████████████ 210 West │████████████████████████████████████████ 450└──────────────────────────────────────────────────────────────────────────────┘┌─ chart bar Value Distribution North │██████████████████████████████████ 400 South │████████████████ 190 East │██████████████████ 220 West │████████████████████████████████████████ 470└──────────────────────────────────────────────────────────────────────────────┘┌─ Note Q1 Total:1210 Q2 Total:1280 Difference Q2-Q1:70└──────────────────────────────────────────────────────────────────────────────┘┌─ Quarterly Market Share Comparison Container North : 400 South : 190 East : 220 West : 470└──────────────────────────────────────────────────────────────────────────────┘┌─ Note Contact Luniv Technology for assistance with your dashboard.└──────────────────────────────────────────────────────────────────────────────┘LunivCore leverages the best of two worlds to ensure speed and extensibility.
Host Language (C)
The C core efficiently manages memory and executes computationally intensive tasks (Lexer, Parser, Executor) for high-speed data processing.
Guest Language (Lua)
Provides a clean, dynamic scripting interface (DSL) for users, which handles complex logic and communicates with the C core.
The Glue: Lua C API
This stable API acts as the secure, high-speed bridge, efficiently passing data and commands between the C and Lua environments.
You’ll need git, build tools, and a C compiler.
Clone the repository from GitHub.
Change into the newly created directory.
cd LunivCoreUse the provided Makefile to build the core engine.
makeExecute the lcore binary with the example file.
./lcore examples/helloworld.lcoreOpen Source Community
View the repository, submit improvements, or join development efforts.
View on GitHub
Enterprise Support
Get priority features, dedicated support, and commercial licensing.
Contact Us