As Flutter developers, we're familiar with SDKs for authentication, analytics, cloud storage, and databases. Recently, I explored the VModal Flutter SDK, which takes a different approach by providing a client library for interacting with an AI-powered video platform.
Instead of performing AI inference on the device, the SDK acts as a bridge between your Flutter application and the VModal cloud platform, handling authentication, media uploads, indexing, and semantic search.
Project Architecture
The SDK follows a clean and modular architecture centred around a single client.
Flutter Application
│
▼
VmodalClient
│
┌──────┼────────────────────────────────────┐
▼ ▼ ▼ ▼ ▼
Auth Search Collections Images Admin
│
▼
HTTP Transport
│
▼
VModal Cloud Platform
The VmodalClient acts as the entry point and exposes different resources responsible for specific domains of the API.
Initialising the SDK
The SDK is configured using an API key provider and a configuration object.
final apiKeys = MutableApiKeyProvider(apiKey);
final client = VmodalClient(
config: SdkConfig(
apiKeyProvider: apiKeys,
),
);
Once initialised, the client exposes multiple resources, including:
- Authentication
- Semantic Search
- Collections
- Images
- Indexes
- Administration
Resource-Based Design
One thing I appreciated was the separation of responsibilities.
Instead of exposing hundreds of API methods from a single class, the SDK groups related functionality into dedicated resources.
For example:
client.auth.health();
client.searches.search(...);
client.collections.create(...);
client.images.list(...);
This keeps the API intuitive and easy to navigate.
Secure Upload Workflow
The upload process is designed around signed URLs instead of sending large media files through the application server.
The workflow looks like this:
Flutter App
│
Select Video
│
▼
Request Upload Session
│
▼
Receive Signed URL
│
▼
Upload to Cloud Storage
│
▼
Notify Backend
│
▼
AI Processing Begins
This approach scales much better for large video files and is commonly used by cloud providers.
AI-Powered Semantic Search
The most interesting feature is the search API.
Rather than relying on filenames or manually assigned tags, the platform supports semantic search.
For example, a query such as:
"A person riding a bicycle at sunset"
or
"A red sports car driving on a highway"
can return the most relevant indexed videos.
Although the Flutter SDK simply sends the request, it's clear that the backend performs embedding generation and vector similarity search.
Clean Networking Layer
Another thing that stood out was the networking architecture.
Business logic is completely separated from HTTP communication.
Search Resource
│
▼
HTTP Wrapper
│
▼
Transport Layer
│
▼
REST API
This abstraction makes the SDK easier to maintain and simplifies testing because the transport layer can be mocked independently.
Overall Workflow
The SDK follows a straightforward lifecycle:
Initialize SDK
│
Authenticate
│
Choose Operation
│
┌──────┼─────────────┐
▼ ▼ ▼
Search Upload Collections
│ │ │
▼ ▼ ▼
Backend Processing
│
▼
Return Typed Models
Most of the heavy lifting happens in the cloud. The SDK is responsible for providing a clean Flutter interface to those backend services.
Design Patterns
The implementation appears to use several familiar design patterns:
-
Facade Pattern (
VmodalClient) -
Dependency Injection (
SdkConfig) - Resource Pattern (Auth, Search, Collections, Images)
- Transport Abstraction (HTTP layer separated from business logic)
- Strongly Typed Models for requests and responses
These patterns make the codebase modular and relatively easy to extend.
What the SDK Doesn't Do
Based on the repository, the SDK doesn't appear to:
- Perform AI inference locally
- Process or transcode videos on-device
- Record video using the camera
- Run offline machine learning models
Instead, it delegates those responsibilities to the VModal backend.
Final Thoughts
Overall, the VModal Flutter SDK is well structured and follows many of the architectural practices you'd expect from a production-ready Flutter SDK. The resource-based organisation, transport abstraction, and secure upload workflow make it straightforward to integrate into an application.
The AI-powered semantic search capability is the standout feature. Rather than building search around filenames or metadata, the platform enables developers to search media using natural language, while keeping the Flutter client lightweight and focused on API communication.
If you've worked with SDKs like Firebase or Supabase, the overall developer experience will feel familiar, with the addition of AI-driven media indexing and search capabilities.
Have you explored similar AI media platforms or integrated semantic search into a Flutter application? I'd be interested to hear about your experience and any challenges you've encountered.
Top comments (1)
Looks interesting.