Functionary How it works

Deployment

Own the process. Choose the data boundary.

Functionary is being built for operator-controlled deployment. Today the repository supports local development; packaged self-hosting and a hosted service are not yet available. The underlying ownership model is already concrete: readable flow files and local runtime state.

It's just a file

A flow is readable JSON, not an opaque project format.

There is no opaque project format and no vendor database holding your process hostage. A flow is nodes and edges in pretty-printed JSON. Read it, diff it in review, commit it alongside the rest of your code, and edit it with ordinary file tools.

flow.json
{
  "id": "00000000-0000-0000-0000-000000000001",
  "name": "Research brief",
  "version": "1.0.0",
  "nodes": [
    {
      "id": "regularize-1",
      "block_type": {
        "block_type": "regularize",
        "accepted_formats": ["pdf", "html", "txt"]
      },
      "position": { "x": 0, "y": 0 }
    },
    {
      "id": "extract-1",
      "block_type": {
        "block_type": "extract_insights",
        "topics": ["changes", "risks"]
      },
      "position": { "x": 240, "y": 0 }
    }
  ],
  "edges": [
    {
      "id": "e1",
      "source": "regularize-1",
      "target": "extract-1",
      "verified": true
    }
  ],
  "metadata": {},
  "sketches": [],
  "horizons": []
}

Files · State · Egress

Ownership is a property of the architecture, not a clause.

Files

Flows are files

A flow is readable, pretty-printed JSON. Read it, diff it, commit it, and edit it outside the canvas without converting from a proprietary project format.

State

A data root you choose

Flow files, artifacts, execution history, and other runtime state live beneath an operator-selected local data root, using JSON files and local databases.

Egress

Connections are choices

Model providers and connectors determine what leaves the machine. Ollama provides a local inference path; remote models and external connectors transmit the inputs they need.

Deployment posture

Local development now. Packaged deployment next.

The current repository runs the application locally for development. It does not yet ship a supported self-hosting package or hosted service. The deployment goal is to preserve the same portable flow format and operator-selected data root wherever the runtime is installed.

Control by design

Local state does not mean automatic no-egress operation.

Flow and run state can stay local while a configured model provider or connector still uses the network. Choose Ollama or model-free blocks when inference must remain local. PII detectors can block execution when configured checks fail; post-output policies can redact or hash matching fields. Functionary does not currently promise automatic pre-model redaction.

Connector credentials are encrypted at rest only when KMS is configured. Without it, the local server warns that credentials are stored in plaintext. The boundary is explicit so operators can configure it on purpose.

Local-first foundations

Local state works offline; connected capabilities do not.

Flow files and local databases remain on disk without a network. Telemetry export is off by default. Remote AI providers and external connectors require their configured services; Ollama offers local inference. The development build has a no-auth shortcut, while deployed builds currently require a local application account and session.

Licensing

Licensing details are coming.

The split between open-source and commercial licensing is still being worked out. This page is written price-agnostic; the terms will land here when they are settled.

Portability starts with a process you can read.

Flows live outside a proprietary project format, and runtime state stays under a path the operator selects. Distribution and licensing terms are still being settled, so portability claims stop there for now.