|
Some checks failed
Security / Security check (push) Failing after 1s
`HubClient` accepts an optional `authToken: String?` that
attaches `authorization: Bearer <token>` to every gRPC + gRPC-
Web call as default CallOptions metadata.
Operators with `auth.tokens:` configured on the hub now have
a one-line client-side wire-up:
final client = HubClient(
endpoint: HubEndpoint(host: '...', port: 50051),
authToken: 'secret-from-1password-or-vault',
);
Without `authToken`, calls go unauthenticated — the hub
either accepts (anonymous mode) or rejects with
`UNAUTHENTICATED` (16) when auth is required.
dart analyze + dart test green (4 tests).
Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
|
||
|---|---|---|
| .forgejo/workflows | ||
| .githooks | ||
| example | ||
| lib | ||
| test | ||
| tools | ||
| .gitignore | ||
| analysis_options.yaml | ||
| CHANGELOG.md | ||
| pubspec.yaml | ||
| README.md | ||
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 modulesfai-plugin-sdk(Rust) — Studio pluginsfai_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
HubClientwrapper 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.