vmodal_sdk_android is a free, open source photo & video editors project written in Kotlin and released under Apache-2.0. It has 582 GitHub stars, 12 forks and 11 open issues, and was last pushed 3 days ago. On this registry it ranks #52 of 53 tracked projects in Photo & Video Editors, with 5 head-to-head comparisons available.

What is vmodal_sdk_android?

VModal Android SDK is an Apache-2.0 Kotlin client library from V-Modal that gives Android applications multimodal video and image search, built for Android developers who want semantic search and streaming uploads inside an app whose screens they already own.

What it is

The project is a video search SDK for Android Kotlin, maintained at v-modal/vmodal_sdk_android under the Apache-2.0 licence. It gives an app what the README calls a visual memory for video and images: media is uploaded, and moments are then found by image-semantic meaning or by imagery rather than by manual tagging or titles. The SDK is explicitly a UI-free Kotlin client — the app owns the screens and the lifecycle, while the SDK handles the gateway, the request models, response parsing, signed upload streams, progress and cancellation. It sits in the Android ecosystem and is written for the tools Android teams already use: Kotlin, Jetpack Compose, Views, coroutines, StateFlow, and the standard Android build toolchain.

The concrete problem it removes is the gateway and upload plumbing that each video app would otherwise write and maintain itself. Rather than hand-building request models, response parsing, signed upload streams, progress reporting and cancellation, an app configures the client, supplies a runtime API key, and calls the SDK. It also replaces manual browsing of a video library: a query such as "Find the red car entering the parking lot" is served by image-semantic search rather than by tags. Uploads accept a streaming content:// URI straight from the system photo picker, so captured or selected media moves into the library without a separate export or copy step, and a cancel action genuinely cancels.

Key capabilities

  • Semantic video and image search, so moments are located by meaning, including queries phrased as scenes such as "Find the red car entering the parking lot".
  • Fixed image-semantic search for finding a visual moment by meaning.
  • Streaming content:// URI support, allowing uploads directly from the system photo picker.
  • A cold upload Flow plus a callback UploadHandle for compatibility with existing callback-style code, with cancellation that really cancels.
  • A UI-free Kotlin client that fits Compose, Views, or an app's own design system, with no login UI imposed.
  • App-owned runtime credentials, so the SDK coexists with existing authentication and dependency injection.
  • A CoroutineWorker option plus a coroutine facade called from caller-owned scopes, with StateFlow and lifecycle-aware state collection rather than a hard-coded main dispatcher.

Who uses it and how

  • Android teams adding search to an existing video app while keeping their own screens and lifecycle, using Compose, Views or a custom design system.
  • Apps that already have authentication and dependency injection, since credentials are supplied at runtime and no login UI is imposed.
  • Development against the stated environment — JDK 17, compile SDK 34, minimum SDK 24 — on an Android 7.0/API 24+ emulator or a connected device.
  • Teams validating the full flow through uinterface/sdk_android/examples/03_fullapp/, the "VModal Full Search" example, which configures the client, calls auth.me(), lists video collections, uploads a selected content:// URI or bundled sample with progress and cancellation, creates or checks an image index, searches the collection, resolves result images in one bulk request, and shows them in a responsive grid.

Getting started

Clone the repository, then run bash install.sh install and bash install.sh check inside uinterface/sdk_android, using the checked-in Gradle wrapper. Open uinterface/sdk_android/examples/03_fullapp/ in Android Studio and run the app configuration, or build and install from the command line with ./gradlew :app:installDebug.

How it compares

The facts for this entry name no comparable SDKs and no paid products that it is positioned against, so it stands alone in that respect in this registry. Its neighbours here are the Photo & Video Editor applications it is categorised under, but as a UI-free Kotlin client it is a library those kinds of apps would integrate rather than an editor in its own right.

When to use it — and when not to

A team adopting it operates an Android build environment: Android Studio, Android SDK 34, JDK 17, ANDROID_HOME or ANDROID_SDK_ROOT for command-line builds, and an API 24+ emulator or device. It is a poor fit for teams outside Kotlin and Android, and for anyone wanting a finished search interface, because the client deliberately ships no screens and the app must build them. The entry also shows modest community signals — 582 stars, 12 forks and 11 open issues — and the README is oriented around a setup prompt for coding agents and the full example app, so teams wanting prose API reference material should expect to read the SDK source and example alongside it.

project readme (upstream, from github) — read inline
    

V-Modal AI for Android

Give your Android app a Visual Memory for video and images

Upload video. Find moments by image-semantic meaning or imagery.
Build the experience in Kotlin, Compose, Views, coroutines, and the Android tools you already know.

Android native Kotlin 1.9+ Java 17 Gradle 8.6 Apache License 2.0 Android SDK CI

Turn every video library into an experience Android users can explore.

V-Modal AI Discord
V-Modal AI Website

Build the feature people remember

V-Modal AI brings multimodal video search and mobile-friendly uploads to Kotlin with a small, typed API. Your app owns the screens and lifecycle; the SDK handles the gateway, request models, response parsing, signed upload streams, progress, and cancellation.

Your Android experience VModal gives you
“Find the red car entering the parking lot” Semantic video and image search
Find a visual moment by meaning Fixed image-semantic search
Upload from the system photo picker Streaming content:// URI support
A cancel action that really cancels Cold upload Flow plus callback UploadHandle compatibility
Compose, Views, or your own design system A UI-free Kotlin client
Existing authentication and DI App-owned runtime credentials—no login UI imposed
Work that survives beyond one screen CoroutineWorker plus cancellation-aware upload Flow
Prompt to start

Copy this prompt into your coding agent:

Download, install, set up, run, and validate the VModal Android SDK and its
complete demo application.

1. Download the GitHub repository:

     git clone https://github.com/v-modal/vmodal_sdk_android
     cd vmodal_sdk_android

   If the repository already exists, reuse the current checkout and preserve
   unrelated local changes.

2. Install and verify the SDK toolchain:

     cd uinterface/sdk_android
     bash install.sh install
     bash install.sh check

   Use the checked-in Gradle wrapper. Do not create another environment or
   replace the reviewed wrapper.

3. Set up Android:

   - Install Android Studio and Android SDK 34.
   - Use JDK 17.
   - Set ANDROID_HOME or ANDROID_SDK_ROOT when building from the command line.
   - Start an unlocked Android 7.0/API 24+ emulator or connect a device.
   - Supply the VModal API key only at runtime in the demo application. Never
     save it in source, resources, Gradle properties, local.properties, logs,
     or the manifest.

4. Run the complete demo application:

   Open `uinterface/sdk_android/examples/03_fullapp/` in Android Studio, allow
   Gradle to sync, select the `app` run configuration, and run
   **VModal Full Search** on the API 24+ emulator or device.

   Also build and install it from the command line:

     cd examples/03_fullapp
     ./gradlew --no-daemon :app:testDebugUnitTest :app:assembleDebug
     adb devices
     ./gradlew --no-daemon :app:installDebug

Set up and validate `uinterface/sdk_android/examples/03_fullapp/` as a complete
Android example for the local VModal Android SDK.

Before editing, inspect the existing SDK, full-app example, starter snippets,
scripts, tests, and documentation. Reuse the current implementation and improve
it in place; do not replace working components or duplicate SDK logic inside
the example.

Requirements:
- Keep the default Gradle project dependency on the SDK at `../..`; preserve
  the existing optional Maven Local verification path.
- Use Kotlin, Jetpack Compose, coroutines, `StateFlow`, and lifecycle-aware
  state collection with Java 17, compile SDK 34, and minimum SDK 24.
- Provide a simple runnable flow for an API key supplied at runtime: configure
  the client, call `auth.me()`, list video collections, upload a selected
  `content://` URI or bundled sample with progress and cancellation,
  create/check an image index, search the selected collection, resolve result
  images in one bulk request, and display them in a responsive grid.
- Use the coroutine facade from caller-owned scopes and collect UI state with
  lifecycle awareness; do not hard-code a main dispatcher inside SDK calls.
  Keep collection, stream, index-job, search-hit, and resolved-image contracts
  explicitly coupled so data from one scope cannot appear under another.
- Keep credentials in memory only. Never hard-code, persist, print, or commit
  API keys, bearer tokens, or presigned URLs. Do not attach the VModal bearer
  token when loading presigned image URLs.
- Use Android's Storage Access Framework for user-selected videos; do not add
  broad storage permissions or depend on device filesystem paths.
- Keep the example beginner-friendly and small. Use the public typed SDK API,
  preserve request/response contracts, handle loading, empty, error, and
  cleanup states, and cancel/clear SDK resources when the ViewModel is cleared
  or the authenticated identity changes.
- Update `examples/03_fullapp/README.md` when setup steps or behavior change.
- Use the repository scripts and pinned Gradle/JDK setup.

From `uinterface/sdk_android`, verify the SDK with:

  bash install.sh check
  bash test.sh test
  bash run.sh sim

Then verify the full app with:

  cd examples/03_fullapp
  ./gradlew --no-daemon :app:testDebugUnitTest :app:assembleDebug

With an unlocked API 24+ emulator or device available, also run
`./gradlew --no-daemon :app:connectedDebugAndroidTest`. Report the files
changed, validation results, and any device or platform check that could not be
run with the exact blocker. Do not claim a live API flow passed unless it was
tested with a valid runtime key.
Guidelines

Start with the Android integration cookbook for the capability map, one coupled upload → index → search recipe, Compose and classic lifecycle patterns, content://, WorkManager, typed failures, and account-switch cleanup. Demo UI remains application-owned: the SDK publishes no navigation, screens, themes, accessibility policy, or design system.

[!TIP] Building a mobile video experience? Get a free beta API key and join the VModal Discord.

SDK docs: v-modal.github.io/vmodal_sdk_android/

We would love to help you ship it.

Start building

For new content flows, bind upload, search, asset, index, and deletion calls to one immutable project, collection, and stream:

import com.vmodal.sdk.VModal

val content = VModal.configure(
    projectId = "food_app",
    apiKey = apiKeyLoadedByYourApp,
).scope(
    collectionName = "user_123",
    streamName = "uploads",
)

val results = content.search("the cyclist crossing the bridge at sunset")

Continue with the technical introduction for installation, runtime credentials, search, uploads, lifecycle integration, network behavior, the supported toolchain, and local validation.

Choose a developer use case
If you want to… Start here
Learn one API operation at a time Kotlin starter examples
Build a picker → upload → index → search screen Upload and search app
Validate the complete flow stage by stage Full search application
Build a local street-video search product flow Framebase Compose application
Design global, per-user, multi-stream, or catalog indexes Index organization examples
Explore the SDK

Learn More About VModal

Explore the full platform and developer resources:

  • VModal — the official home of VModal multimodal video and image search.
  • VModal for Developers — API docs, SDKs, and integration guides for building on VModal.
  • VModal AI — learn how VModal AI powers semantic search across video, speech, text, and imagery.

Get started today at www.v-modal.com, read the developer documentation, and discover the technology behind VModal AI.


        

Build video experiences people can search, not just scroll.

Built for Android developers by VModal. Licensed under the Apache License 2.0.
Android and the Android robot are trademarks of Google LLC. Asset attribution is documented in assets/README.md.

Frequently asked questions

Is vmodal_sdk_android free to use?

vmodal_sdk_android is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does vmodal_sdk_android do?

Video Search SDK for Android Kotlin. Integrate in any video app

What is vmodal_sdk_android written in?

vmodal_sdk_android is primarily written in Kotlin. Its source is publicly available at https://github.com/v-modal/vmodal_sdk_android, and it has 582 GitHub stars.