✦ FoxPro Modernization Platform

Your FoxPro data.
Modern APIs.
Zero migration.

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.

Works alongside live FoxPro 2.x & Visual FoxPro 9
REST API — live FoxPro data
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
🔒

Your data is locked in DBF files

Nothing speaks DBF natively anymore. FoxPro data is invisible to modern tools, APIs, and reporting platforms.

💸

Migration is expensive and risky

A full rewrite of a running business system can take years and millions. And FoxPro still works — so why fix what isn't broken?

⏱️

Modern tools can't wait

Your team needs dashboards, web UIs, and integrations today. You can't put the business on hold for a multi-year migration.

Everything you need to modernize FoxPro — nothing you don't

Ninja is a lightweight server that sits alongside your existing FoxPro installation. No schema migration. No downtime. No risk to the running system.

🗄️

Layer 1 — Table CRUD

Every table in your data directory is instantly available as a REST endpoint. Zero configuration — just point Ninja at your DBF folder.

  • GET, POST, PATCH, DELETE on every table
  • Filtering with typed predicates (eq, like, in, ...)
  • Cursor-based pagination with optional sort
  • Schema discovery — read column types and nullability
⚙️

Layer 2 — Aggregate Engine

Multi-table business operations defined in YAML and executed as atomic units. The engine enforces rules your FoxPro screens always relied on.

  • Multi-table writes with rollback journals
  • Counter allocation from appreg01.dbf (AM-compatible)
  • FK existence checks and cascade deletes
  • Field validators, computed values, conditional routing
🤖

Migration Toolkit

An LLM-powered converter that reads your FoxPro screens and programs (.sc2, .prg) and generates YAML aggregates you can review and promote.

  • Parses FoxPro source with a native tokenizer
  • Grounded in your live schema — no hallucinated columns
  • Structural regression harness validates each draft
  • 90%+ recall on real-world FoxPro source
🦊

FoxPro Coexistence

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.

  • Header refresh on every read — FoxPro-appended rows visible instantly
  • WriteLock mode keeps FoxPro reading alongside API writes
  • CDX indexes maintained on every API write
  • Boot-time stale-tag audit with /health/details reporting

Running in minutes, not months

No schema migration, no new database, no disruption to the running system.

1

Point & configure

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.

2

Discover your data

Start Ninja. Every table is immediately available at /tables. Hit /health/details to see table counts, DBC metadata, and any coexistence warnings.

3

Build on top

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.

What people build with FoxPro Ninja

📊

Reporting Dashboards

Live charts and grids over your FoxPro data — no export, no ETL, no overnight batch.

🌐

Web & Mobile UIs

Replace aging Windows forms with a browser UI your team can use from anywhere.

🔄

Data Import / Migration

Import data from any source system into your FoxPro data using the REST API and aggregate engine.

🔗

SaaS Integrations

Connect FoxPro data to modern tools — Zapier, Power BI, custom webhooks — via standard REST.

Three ways to deploy FoxPro Ninja

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.

Engine

Self-Hosted

Contact us
Annual license · volume pricing available

  • Layer-1 REST CRUD over all DBF tables
  • YAML aggregate engine (multi-table ops)
  • DBC / RI cascade support
  • Per-scope bearer token auth
  • HTMX admin UI at /admin
  • Audit log (JSONL, append-only)
  • FoxPro coexistence — runs alongside live FoxPro
  • Windows + Linux + macOS binaries
Get a quote
Enterprise

Managed Cloud Edge

Contact us
Annual license · per-site pricing

  • Everything in Professional
  • Cloudflare Tunnel managed deployment
  • Zero-trust access policies
  • Audit log shipping + dashboards
  • Fleet management across customer sites
  • SLA + dedicated support channel
  • Multi-site volume discount
Get a quote

Common questions

No — and that's the point. Ninja runs alongside your live FoxPro installation, reading and writing the same DBF files. FoxPro keeps doing what it does. You add modern capabilities on top without touching the existing system.
FoxPro 2.x and Visual FoxPro 9 (and everything in between). The engine reads the standard DBF/FPT/CDX format and the DBC database container used by VFP. DBC-level metadata (long table names, field defaults, RI rules, cascade relationships) is used to enforce business rules during API writes.
No. Every API write runs with MaintainIndexes: 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.
Yes. Set 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.
The migration toolkit reads your FoxPro screen (.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.
The engine itself is self-hosted — your DBF data never leaves your network. The migration toolkit sends FoxPro source code to Anthropic's Claude API to generate YAML drafts; this is disclosed clearly and requires explicit acknowledgment before running. The Enterprise cloud edge uses Cloudflare Tunnel, which proxies traffic through Cloudflare's network but does not store or process payload data.
Yes — Windows is the primary deployment target. The binary is built and tested for Windows x64 (the typical TSplus / RDS server environment where FoxPro runs). Linux and macOS binaries are also provided for development and cloud-edge use cases.

Let's talk about your FoxPro 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.

  • We respond within one business day
  • First call is a 30-minute technical discovery — no sales pressure
  • We'll tell you honestly if Ninja isn't the right fit
  • Proof-of-concept against your actual data directory available