Skip to main content

EdgeData API reference

EdgeData provides local data collection and classification primitives for Edge apps.

It is supporting infrastructure. Keep app-specific business rules in the app.

Edge

public enum Edge

Static API for local data operations.

MethodDescription
bootstrap(dbQueue:trainingDataSink:)Initializes EdgeData with a local GRDB queue and optional training sink.
registerSchema(_:)Registers an app data shape at launch.
schema(_:)Looks up a registered data shape.
registeredSchemaNames()Lists registered names.
recordRaw(fact:customFactId:)Records unclassified local data.
record(fact:)Records already-classified local data.
recordEvent(...)Records an AI interaction event.
countFeedbackEvents(namespace:)Counts events with feedback.
queryFacts(namespace:schema:status:limit:)Queries local facts.
countFacts(namespace:schema:status:)Counts local facts.
correctClassification(...)Applies a user correction to a classification.
onClassified(_:)Registers a callback for successful classification.
onClassificationFailed(_:)Registers a callback for failed classification.
fetchFact(id:)Fetches one fact by ID.
reclassifyAsync(...)Requests reclassification.

Core types

TypeDescription
Sensitivity.localOnly, .meshOk, .trainingOk.
FactStatusLocal classification lifecycle state.
FieldTypeSupported field kinds for app data shapes.
FieldDefField declaration.
SemanticLabelsLabels for primary timestamp, value, and entity fields.
SchemaDefApp data shape declaration.
RawFactRaw local payload waiting for classification.
FactClassified local payload.
QueryStatusQuery filter for classified, pending, failed, or all facts.

ClassificationDaemon

public actor ClassificationDaemon

Background classifier for raw local data.

APIDescription
ClassificationDaemon.sharedShared daemon.
start(namespace:candidateSchemas:llmClient:toolNames:promptBuilder:)Starts classification for a namespace.
stop()Stops the daemon.
wake()Wakes the daemon from idle sleep.

EdgeClassificationLLMClient

public protocol EdgeClassificationLLMClient: Sendable

The app implements this protocol to provide local LLM classification.

RequirementDescription
isBusyWhether the local LLM is busy with user-facing work.
generate(messages:)Generates a classification response.
generate(messages:toolNames:)Optional tool-aware generation path.

ClassificationParser

public enum ClassificationParser

Parses local LLM classification output.

MethodDescription
parse(llmOutput:candidateSchemas:)Parses and validates a classification response.
stripMarkdownCodeFence(_:)Removes a Markdown code fence wrapper.
extractJSONObject(_:)Extracts the first JSON object from text.

Privacy guidance

Use Sensitivity to keep local-only data local. Do not include raw user correction text in logs, analytics, or collaboration messages.