{
  "version": "2",
  "generatedAt": "2026-11-03T22:49:39.280Z",
  "listing": {
    "slug": "lambdadevelopment--lambda-erp",
    "name": "Lambda ERP",
    "tagline": "Chat-first open-source ERP with a native MCP server, REST API and plugin seams for per-customer deployments.",
    "shortTagline": "Chat-first open-source ERP",
    "description": "Lambda ERP runs invoicing, sales and purchase cycles, stock and a double-entry general ledger, and is driven mainly by chat: a planner model calls document, master and report tools, and an Anthropic sub-agent writes custom analytics. Any MCP client can drive the same tools at POST /api/mcp with role-capped keys. Apache-2.0, one deployment per company, extended through a plugin repo rather than a fork.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "invoicing-finance",
    "alternativeTo": [
      "NetSuite",
      "Odoo"
    ],
    "shape": "business-app",
    "formFactor": "web-app",
    "executionModel": "hybrid",
    "provenance": "mixed",
    "codeStack": {
      "languages": [
        "Python",
        "TypeScript"
      ],
      "frameworks": [
        "FastAPI",
        "React",
        "Vite",
        "Tailwind"
      ],
      "packageManager": "pip / npm",
      "database": [
        "SQLite",
        "PostgreSQL"
      ],
      "hostingTarget": [
        "Docker Compose",
        "single VPS",
        "Azure Container Apps (demo)"
      ]
    },
    "modelStack": {
      "providers": [
        "OpenAI (orchestrator)",
        "Anthropic (code specialist)"
      ],
      "models": [
        "claude-opus-4-7 default for ANTHROPIC_CODE_MODEL"
      ],
      "requiredKeys": [
        "OPENAI_API_KEY",
        "ANTHROPIC_API_KEY",
        "ANTHROPIC_CODE_MODEL"
      ],
      "promptLocations": [
        "api/chat.py (tool schemas and reasoning loop)",
        "docs/agents/"
      ],
      "tools": [
        "document CRUD",
        "search_masters",
        "get_master_fields",
        "reports",
        "aggregations",
        "create_custom_analytics_report"
      ]
    },
    "repos": [
      {
        "url": "https://github.com/lambdadevelopment/lambda-erp",
        "owner": "lambdadevelopment",
        "name": "lambda-erp",
        "license": "Apache-2.0",
        "stars": 30,
        "lastCommit": "2026-08-29"
      }
    ],
    "interface": {
      "kind": "mcp",
      "url": "https://github.com/lambdadevelopment/lambda-erp#what-works-today",
      "official": true,
      "hosted": "local"
    },
    "operability": "native",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Set up the company and chart of accounts",
        "reachable": true,
        "evidence": "guided setup runs through chat; chat API (docs/chat-api.md) shares the same keys"
      },
      {
        "job": "Quotation, sales order, delivery note, sales invoice, payment",
        "reachable": true,
        "evidence": "MCP lists/creates/submits documents; REST POST /api/documents/{type} and .../submit"
      },
      {
        "job": "Purchase cycle",
        "reachable": true,
        "evidence": "README: buying equivalents of the sales cycle on the same Document lifecycle"
      },
      {
        "job": "Returns, credit and debit notes",
        "reachable": true,
        "evidence": "README what-works list; document conversions through .../convert"
      },
      {
        "job": "Stock ledger and balances",
        "reachable": true,
        "evidence": "stock_balances semantic dataset; Stock Entry documents"
      },
      {
        "job": "General ledger and preset reports",
        "reachable": true,
        "evidence": "MCP 'run reports'; REST /api/reports/…; Trial Balance, P&L, Balance Sheet, AR/AP aging"
      },
      {
        "job": "Master data (customers, suppliers, items)",
        "reachable": true,
        "evidence": "REST /api/masters/{type}; MCP manage master data"
      },
      {
        "job": "Custom analytics reports",
        "reachable": true,
        "evidence": "chat tool create_custom_analytics_report; needs ANTHROPIC_API_KEY"
      },
      {
        "job": "Create documents from PDF or image attachments",
        "reachable": null,
        "evidence": "README: attachments handled in chat; not confirmed for the chat API"
      },
      {
        "job": "Users, roles and API keys",
        "reachable": true,
        "evidence": "admin-role key reaches settings and user endpoints (docs/rest-api.md)"
      }
    ],
    "editions": [
      {
        "name": "Free",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/lambdadevelopment/lambda-erp"
          },
          {
            "kind": "container",
            "url": "https://github.com/lambdadevelopment/lambda-erp#docker-one-command",
            "command": "cp .env.example .env && docker compose up --build"
          },
          {
            "kind": "installable",
            "url": "https://pypi.org/project/lambda-erp/",
            "command": "pip install lambda-erp"
          }
        ]
      },
      {
        "name": "Hosted (dedicated instance per customer)",
        "price": null,
        "open": false,
        "distributions": []
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No SKILL.md, Claude Code plugin, or skills install target in the repo."
    },
    "customization": {
      "summary": "For a Swiss, German or generic-chart business the surface is the .env (OpenAI key for chat, optional Anthropic key for custom reports, seeded admin) plus the setup conversation that books the chart of accounts and tax templates. Branding, feature toggles and base currency belong in config/env in a customer repo; new doctypes, GL overrides and country packs are Python or TypeScript plugins loaded through LAMBDA_ERP_PLUGINS.",
      "envVars": [
        "OPENAI_API_KEY",
        "ANTHROPIC_API_KEY",
        "ANTHROPIC_CODE_MODEL",
        "LAMBDA_ERP_ADMIN_EMAIL",
        "LAMBDA_ERP_ADMIN_PASSWORD",
        "LAMBDA_ERP_ADMIN_NAME",
        "LAMBDA_ERP_PLUGINS",
        "LAMBDA_ERP_ENABLE_PUBLIC_DEMO",
        "JWT_SECRET_KEY"
      ],
      "configFiles": [
        ".env",
        "docker-compose.yml",
        "frontend/src/lib/doctypes.ts"
      ],
      "promptFiles": [],
      "effort": "config-only",
      "editCount": 12
    },
    "useWhen": [
      "I run a small company in Switzerland, Germany or with a generic chart and want to create quotes and invoices by asking, not clicking",
      "I am an implementation partner and want to hand each client an ERP my agent can operate over MCP and extend from a plugin repo"
    ],
    "accounts": [
      "OpenAI API account",
      "Anthropic API account (custom analytics only)"
    ],
    "active": true,
    "lastActivity": "2026-08-29",
    "gotchas": [
      "Localization packs exist only for Switzerland and Germany (SKR03/SKR04) plus a generic chart; other countries need a contributed pack",
      "Multi-currency, approval workflows, manufacturing and payroll are on the todo list",
      "First Docker boot runs a 3-year demo simulator and takes 2-3 minutes",
      "Real-software signal is thin: 30 stars, 6 forks, all issues from one account; kept on the Show HN thread and PyPI/npm releases"
    ],
    "fit": {
      "adaptable": 3,
      "operable": 3
    },
    "evidence": {
      "formFactor": "React frontend plus FastAPI backend served on one origin (README How it works)",
      "executionModel": "planner model with whitelisted tools and semantic datasets; deterministic GL engine underneath",
      "operability": "README: MCP at POST /api/mcp built from the live registries; docs/rest-api.md and docs/chat-api.md from the Builder",
      "effort": ".env.example in repo; README Environment section; plugin seams documented in docs/core-extension-architecture.md",
      "editions": "Apache-2.0 source, PyPI and npm packages; README offers dedicated hosted instances without a price",
      "active": "GitHub pushedAt 2026-08-29; Show HN 2026-04-26"
    },
    "confidence": {
      "formFactor": 0.9,
      "executionModel": 0.9,
      "operability": 0.85,
      "effort": 0.75,
      "reach": 0.75,
      "editions": 0.8
    },
    "openQuestions": [
      "Gate 3 borderline (see gotchas); Curator to confirm",
      "Whether the chat API accepts attachments",
      "Exact MCP tool names (README describes them; no tool list fetched)"
    ],
    "sources": [
      {
        "url": "https://github.com/lambdadevelopment/lambda-erp",
        "foundBy": "sourcing:invoicing-finance:community"
      },
      {
        "url": "https://github.com/lambdadevelopment/lambda-erp/blob/main/docs/rest-api.md",
        "foundBy": "analysis:invoicing-finance"
      },
      {
        "url": "https://pypi.org/project/lambda-erp/",
        "foundBy": "analysis:invoicing-finance"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "unverified",
      "reason": "Native MCP plus REST over a real double-entry ERP, Apache-2.0, config-only for supported countries. Closest thing in the batch to the partner's business-app case; user evidence is thin.",
      "disputed": [
        "gate 3 real-software: under 50 stars"
      ]
    },
    "url": "apps/lambdadevelopment--lambda-erp.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/lambdadevelopment--lambda-erp.json"
  }
}
