Ninja exposes your existing Visual FoxPro and DBF data over REST HTTP — so you can build modern UIs, reporting dashboards, and integrations without replacing your legacy system.
GET /tables/apvend/rows
?where=LACTIVE:eq:T
&order_by=LNAME
&limit=50
HTTP 200 OK
{
"items": [
{
"cvendno": "000123",
"lname": "Acme Corp",
"lactive": true
}
],
"next_cursor": "AQAAAAAAAAAB"
}
# Create a bill through the aggregate engine
POST /aggregates/bill
{
"vendor_no": "000123",
"amount": 1250.00,
"due_date": "2026-07-15"
}
HTTP 201 Created
→ counter allocated, FK verified,
DBF written, CDX index maintained
Ninja is a lightweight server that sits alongside your existing FoxPro installation. No schema migration. No downtime. No risk to the running system.
Every table in your data directory is instantly available as a REST endpoint. Zero configuration — just point Ninja at your DBF folder.
eq, like, in, ...)Multi-table business operations defined in YAML and executed as atomic units. The engine enforces rules your FoxPro screens always relied on.
appreg01.dbf (AM-compatible)An LLM-powered converter that reads your FoxPro screens and programs (.sc2, .prg) and generates YAML aggregates you can review and promote.
Ninja and live FoxPro can run on the same DBF files simultaneously. Row-level locks cooperate with FoxPro's native RLOCK() at the kernel level.
/health/details reportingNo schema migration, no new database, no disruption to the running system.
Drop a YAML config file next to your DBF data directory. Set your bind address, auth tokens, and whether to run read-only alongside live FoxPro.
Start Ninja. Every table is immediately available at /tables. Hit /health/details to see table counts, DBC metadata, and any coexistence warnings.
Point your reporting tool, web app, or conversion tool at the REST API. Add YAML aggregates as you need business-logic operations beyond simple CRUD.
Live charts and grids over your FoxPro data — no export, no ETL, no overnight batch.
Replace aging Windows forms with a browser UI your team can use from anywhere.
Import data from any source system into your FoxPro data using the REST API and aggregate engine.
Connect FoxPro data to modern tools — Zapier, Power BI, custom webhooks — via standard REST.
Start with the engine and add capabilities as you grow. All tiers run on your own hardware — your data never leaves your network unless you choose the cloud edge option.
/adminMaintainIndexes: true — the CDX is kept current on every insert, update, and delete. On startup, Ninja audits every table's CDX for tags it can't maintain (non-closed-set function keys, FOR clauses) and surfaces them in /health/details so you know in advance. In practice this affects a small number of system-generated tags on a handful of tables.
read_only: true in the config and the engine refuses all write operations at the HTTP layer — GET requests continue to work, POST/PATCH/DELETE return 405 Method Not Allowed. This is the recommended first step: run alongside live FoxPro in read-only mode, validate that your data looks correct, then flip the flag when you're ready to write through the API.
.sc2) and program (.prg) files, parses them with a native tokenizer, grounds them in your live schema, and uses an LLM to generate YAML aggregate definitions you review before promoting. In our testing cohort (870 classes, 101 drafts), average ground-truth recall was 0.957. Accuracy varies by codebase — we include an initial migration engagement with the Professional tier to calibrate the toolkit to your specific system.
Tell us what you're running and what you want to build on top of it. We'll walk you through the right deployment shape and give you a concrete timeline and quote.