{
  "version": "2",
  "generatedAt": "2026-11-03T22:49:39.280Z",
  "listing": {
    "slug": "firefly-iii--firefly-iii",
    "name": "Firefly III",
    "tagline": "Self-hosted double-entry personal finance manager with a REST API that covers almost everything.",
    "shortTagline": "Double-entry personal finance",
    "description": "Firefly III tracks accounts, transactions, budgets, categories, bills, piggy banks and rules on your own server. The Builder ships a JSON REST API that mirrors the UI, so an agent can book transactions, manage budgets and pull reports. Bank imports run through a separate Data Importer tool.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "invoicing-finance",
    "alternativeTo": [
      "YNAB",
      "Quicken"
    ],
    "shape": "product",
    "formFactor": "web-app",
    "executionModel": "deterministic",
    "provenance": "human-written",
    "codeStack": {
      "languages": [
        "PHP",
        "JavaScript"
      ],
      "frameworks": [
        "Laravel"
      ],
      "packageManager": "composer",
      "database": [
        "MySQL",
        "PostgreSQL",
        "SQLite"
      ],
      "hostingTarget": [
        "Docker",
        "Kubernetes",
        "VM",
        "Cloudron",
        "YunoHost"
      ]
    },
    "modelStack": null,
    "repos": [
      {
        "url": "https://github.com/firefly-iii/firefly-iii",
        "owner": "firefly-iii",
        "name": "firefly-iii",
        "license": "AGPL-3.0",
        "stars": 24484,
        "lastCommit": "2026-09-02"
      }
    ],
    "interface": {
      "kind": "api",
      "url": "https://api-docs.firefly-iii.org/",
      "official": true,
      "hosted": "local"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Accounts and balances",
        "reachable": true,
        "evidence": "routes/api.php prefixes v1/accounts, v1/summary"
      },
      {
        "job": "Book and search transactions",
        "reachable": true,
        "evidence": "routes/api.php v1/transactions, v1/transaction-journals, v1/search"
      },
      {
        "job": "Budgets and budget limits",
        "reachable": true,
        "evidence": "routes/api.php v1/budgets, v1/budget-limits, v1/available-budgets"
      },
      {
        "job": "Categories and tags",
        "reachable": true,
        "evidence": "routes/api.php v1/categories, v1/tags"
      },
      {
        "job": "Rules for automatic transaction handling",
        "reachable": true,
        "evidence": "routes/api.php v1/rules, v1/rule-groups"
      },
      {
        "job": "Recurring transactions and bills",
        "reachable": true,
        "evidence": "routes/api.php v1/recurrences, v1/bills, v1/subscriptions"
      },
      {
        "job": "Piggy banks (saving goals)",
        "reachable": true,
        "evidence": "routes/api.php v1/piggy-banks"
      },
      {
        "job": "Reports and charts",
        "reachable": true,
        "evidence": "routes/api.php v1/insight/expense, v1/insight/income, v1/chart/*"
      },
      {
        "job": "Attachments and data export",
        "reachable": true,
        "evidence": "routes/api.php v1/attachments, v1/data/export"
      },
      {
        "job": "Import bank statements",
        "reachable": false,
        "evidence": "import is a separate Firefly III Data Importer tool with its own config; the core API only accepts transactions you already parsed"
      }
    ],
    "editions": [
      {
        "name": "Free",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/firefly-iii/firefly-iii"
          },
          {
            "kind": "container",
            "url": "https://docs.firefly-iii.org/how-to/firefly-iii/installation/docker/"
          }
        ]
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No SKILL.md, Claude Code plugin, or skills install target in the repo."
    },
    "customization": {
      "summary": "Copy .env.example and set the app key, database, timezone, language and mail driver; optional single sign-on through AUTHENTICATION_GUARD. Behavior beyond deployment (rules, budgets, currencies) is data you create in the app or over the API.",
      "envVars": [
        "APP_KEY",
        "APP_URL",
        "DB_CONNECTION",
        "DB_HOST",
        "DB_DATABASE",
        "DB_USERNAME",
        "TZ",
        "DEFAULT_LANGUAGE",
        "DEFAULT_LOCALE",
        "MAIL_MAILER",
        "MAIL_HOST",
        "AUTHENTICATION_GUARD",
        "STATIC_CRON_TOKEN",
        "TRUSTED_PROXIES",
        "SITE_OWNER"
      ],
      "configFiles": [
        ".env"
      ],
      "promptFiles": [],
      "effort": "config-only",
      "editCount": 16
    },
    "useWhen": [
      "I want my money tracked on my own server and my agent to file transactions and check budgets",
      "I run a sole trade and need double-entry books without paying for accounting software"
    ],
    "accounts": [
      "SMTP or Mailgun provider (optional)",
      "GoCardless or Spectre account for bank import through the Data Importer (optional)"
    ],
    "active": true,
    "lastActivity": "2026-09-02",
    "gotchas": [
      "AGPL-3.0: modifications you host for others must be published",
      "Personal finance by design; no invoicing, client portal or tax reports",
      "Bank imports need the separate Data Importer container and its own credentials"
    ],
    "fit": {
      "adaptable": 2,
      "operable": 3
    },
    "evidence": {
      "formFactor": "Laravel web app, Docker image (README)",
      "executionModel": "no model at runtime",
      "operability": "README: 'REST JSON API that covers almost every part of Firefly III'; api-docs.firefly-iii.org published by the Builder; routes/api.php in repo",
      "effort": ".env.example in repo lists deployment variables",
      "editions": "README: free and open source, donations only",
      "active": "GitHub pushedAt 2026-09-02"
    },
    "confidence": {
      "formFactor": 0.95,
      "executionModel": 0.95,
      "operability": 0.95,
      "effort": 0.85,
      "reach": 0.85,
      "editions": 0.95
    },
    "openQuestions": [
      "api-docs.firefly-iii.org returned 403 to the fetcher; Reach was read from routes/api.php instead",
      "Which MCP wrapper (Knuckles-Team/firefly-iii-mcp or scarela/rs-fireflyiii-mcp) is worth naming for MCP-only clients"
    ],
    "sources": [
      {
        "url": "https://github.com/firefly-iii/firefly-iii",
        "foundBy": "sourcing:invoicing-finance:github"
      },
      {
        "url": "https://github.com/firefly-iii/firefly-iii/blob/main/routes/api.php",
        "foundBy": "analysis:invoicing-finance"
      },
      {
        "url": "https://api-docs.firefly-iii.org/",
        "foundBy": "sourcing:invoicing-finance:github"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "unverified",
      "reason": "Official REST API with complete Reach except bank import; config-only .env. Personal finance, so at the edge of the vertical; AGPL holds Adaptable at 2.",
      "disputed": []
    },
    "url": "apps/firefly-iii--firefly-iii.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/firefly-iii--firefly-iii.json"
  }
}
