gRPC client SDK for the F∆I Platform hub (Dart/Flutter)
Find a file
flemming-it 35a8ee2844
Some checks failed
Security / Security check (push) Failing after 2s
feat: ModuleInfoResponse.inputs/outputs + ModuleField
Generated bindings for the schema_version 3 / ModuleField
proto addition in fai_platform commit f8b364e. Studio's
flow editor can now ask the hub for declared inputs and
outputs per module, with i18n descriptions, instead of
parsing references out of the flow YAML.

Bumps fai_client_sdk to 0.18.0.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
2026-06-01 22:13:07 +02:00
.forgejo/workflows ci(security): add self-test harness (mirror of fai/platform) 2026-05-10 21:41:24 +02:00
.githooks ci(hooks): pre-commit security check (mirror of fai/platform) 2026-05-09 13:32:44 +02:00
example chore: rename package + dir + repo to fai_client_sdk 2026-05-26 13:46:16 +02:00
lib feat: ModuleInfoResponse.inputs/outputs + ModuleField 2026-06-01 22:13:07 +02:00
test chore: rename package + dir + repo to fai_client_sdk 2026-05-26 13:46:16 +02:00
tools chore(deps): grpc 4→5, protobuf 4→6 2026-05-29 14:35:05 +02:00
.gitignore feat: fai_dart_sdk scaffold 2026-05-05 14:19:39 +02:00
analysis_options.yaml feat: live HubClient with generated proto bindings 2026-05-05 16:24:16 +02:00
CHANGELOG.md feat: fai_dart_sdk scaffold 2026-05-05 14:19:39 +02:00
pubspec.yaml feat: ModuleInfoResponse.inputs/outputs + ModuleField 2026-06-01 22:13:07 +02:00
README.md chore: rename package + dir + repo to fai_client_sdk 2026-05-26 13:46:16 +02:00

fai_client_sdk (Dart)

gRPC client SDK for the F∆I Platform hub. Used by F∆I Studio (Tier-2 generic GUI) and any Tier-3 Dart/Flutter domain app that wants to talk to a running fai serve.

One of the three SDK families documented in fai/platform/docs/architecture/sdks.md:

  • fai-module-sdk (Rust) — flow modules
  • fai-plugin-sdk (Rust) — Studio plugins
  • fai_client_sdk (Dart) — clients ← this package

Dir / repo carries the _dart / -dart language suffix (fai_client_sdk_dart / client-sdk-dart); the Dart package name itself does not (Dart-land doesn't need the suffix).

Status (2026-05-05): scaffold. Public surface (HubClient, HubEndpoint) is committed; generated proto bindings land in a follow-up commit once the codegen step is wired in. Until then, downstream apps can compile against the stub and Studio uses mock data.

Why a separate SDK package

The platform hub speaks gRPC. Each Dart consumer (Studio plus each Tier-3 domain app) would otherwise re-generate proto bindings independently and write near-identical client boilerplate. This package centralises that work:

  • One source of generated proto bindings.
  • One typed HubClient wrapper with helpers.
  • One place to bump when the wire protocol evolves.

Layout

fai_client_sdk_dart/
├── lib/
│   ├── fai_client_sdk.dart        # Public API
│   └── src/
│       ├── hub_client.dart        # Typed client wrapper
│       ├── channel_factory_io.dart   # Native ClientChannel (HTTP/2)
│       ├── channel_factory_web.dart  # GrpcWebClientChannel.xhr (HTTP/1.1)
│       └── generated/             # protoc output (committed; pinned to platform tag)
├── tools/
│   └── generate.sh                # Wraps `protoc --dart_out=...` against ../fai_platform/proto
├── example/
└── pubspec.yaml

Repo placement

Published as fai/client-sdk-dart on Forgejo (git.flemming.ai).

Versioning

Tracks the platform's wire-protocol version, not the platform binary version. As long as fai:platform@1.x is current, this SDK stays at 0.x (will move to 1.0 once API stabilises); when fai:platform@2.0 lands, a 2.x SDK ships in parallel during the transition.