Self-hosted service
IliasHad/edit-mind avatar
IliasHad/edit-mind

Edit Mind: a self-hosted video knowledge base you query in plain language

Local-first Video Knowledge Base. Index your video library with multi-modal analysis (YOLO, DeepFace, Whisper), search semantically via natural language, Docker-ready.

1,809 stars122 forksTypeScriptNOASSERTION

At a glance

What is it?
Edit Mind indexes a video folder with Whisper transcription, YOLO object detection, DeepFace and scene analysis, then answers natural language queries through ChromaDB. It runs in Docker Compose, is not production-ready, and carries a custom licence rather than an OSI one.
Who is it for?
Adopt Edit Mind if you keep a local video archive and want semantic search over it without uploading footage anywhere, and if you are comfortable running Docker Compose and reading a .env file. Do not adopt it for production pipelines, for anything that needs a published API contract, or if you need Apple GPU acceleration, because the README states the desktop build is where that lives and Docker cannot use it.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 93 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 1, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Edit Mind actually indexes, and who ends up using it

The problem is not storing video. It is finding a clip again. A folder of a few hundred hours of footage has no index beyond filenames, so the only way to locate the shot where a specific person speaks a specific sentence is to scrub through it. Edit Mind builds that index locally: it watches a media folder, queues new files for analysis, and stores the resulting metadata so you can ask for scenes in natural language.

The intended user is someone with a video archive on their own machine or server and a reason not to ship it to a cloud service. The README frames the project as an editor's companion, and the name is explained as a contraction of Video Editor Mind. That said, the feature list is generic enough to fit anyone cataloguing footage: transcription, face recognition, object and text detection, scene analysis. The constraint that follows from this is hardware. The analysis models run in containers, so the practical audience is people with Docker installed and either a CUDA GPU or the patience to run CPU inference.

The README is direct about maturity: Edit Mind is "currently in active development and not yet production-ready", with incomplete features and occasional bugs expected before v1.0. The last push to the repository was on 2026-06-30, and the most recent tagged release is v0.30.0 from 2026-06-28. That is a project moving in small version increments, not a stable platform.

The four services behind a natural language query

Edit Mind is a pnpm monorepo with a Turbo build, and the Compose file splits the work across four long-running services plus storage. The web service is a React Router V7 application that listens on PORT, which the example environment sets to 3745. The background-jobs service is Node.js with Express and BullMQ, and it is the piece that watches for new video files and queues them. The ml service is Python, using PyAV for decoding, PyTorch for the models, and OpenAI Whisper for transcription. ChromaDB holds the vectors; PostgreSQL, accessed through Prisma, holds relational records.

The data flow follows the container boundaries. A file appears under the mounted media path, which is bound into the background-jobs container read-write at /media/videos and into the web container read-only. The job queue picks it up, the ml service produces transcription, face, object and scene metadata, and embeddings are written to ChromaDB. A search request goes to the web service, which queries ChromaDB and returns matching videos or scenes.

One design detail worth noting: the NLP step is pluggable. The environment file offers Ollama with qwen2.5:7b-instruct as the recommended local option, or Google Gemini via an API key. That choice determines whether any part of your pipeline leaves the machine. Everything else in the stack is local by default.

Installing Edit Mind with Docker Compose

The prerequisites listed in the README are Docker Desktop, installed and running. Nothing else is required on the host, because the databases and the ML runtime are all containers. There is a one-line installer for the easy path, which the README shows as:

bash
curl -sSL https://get.edit-mind.com | sh

For the manual path, create a directory and pull the three configuration files. The environment is split in two: .env holds your personal settings and .env.system holds system defaults, and both are required.

bash
mkdir edit-mind
cd edit-mind
curl -L https://raw.githubusercontent.com/IliasHad/edit-mind/refs/heads/main/.env.example -o .env
curl -L https://raw.githubusercontent.com/IliasHad/edit-mind/refs/heads/main/.env.system.example -o .env.system
curl -L https://raw.githubusercontent.com/IliasHad/edit-mind/refs/heads/main/docker-compose.yml -o docker-compose.yml

Before starting anything, the media folder has to be shared with Docker. On macOS and Windows this is done through Docker Desktop under Settings, Resources, File Sharing, where you add the path holding your videos and apply the change. Linux normally has this enabled already. Then edit .env. The two settings that matter first are the media path and the model choice.

ini
HOST_MEDIA_PATH="/Users/yourusername/Videos"
USE_OLLAMA_MODEL="true"
OLLAMA_HOST="http://172.17.0.1"
OLLAMA_PORT="11434"
OLLAMA_MODEL="qwen2.5:7b-instruct"

If you take the Ollama route, the README says to start the server and pull the model first:

bash
OLLAMA_HOST=0.0.0.0:11434 ollama serve
ollama pull qwen2.5:7b-instruct

The alternative is the hosted route, which trades privacy for not downloading a model: set USE_GEMINI="true" and fill in GEMINI_API_KEY. With NVIDIA hardware, swap docker-compose.yml for docker-compose.cuda.yml, which the README provides as a separate file. Once the environment is set, bring the stack up with Docker Compose and open the web service on port 3745. The web container has a healthcheck against http://localhost:3745 with a 60 second start period, so give it a minute before concluding that something failed.

Where Edit Mind falls short

The most honest limitation is stated by the project itself. The README calls the software not yet production-ready, with incomplete features and occasional bugs expected before v1.0. Treat version numbers in the 0.2x and 0.3x range as a signal rather than a formality: v0.21.0, v0.22.0 and v0.30.0 landed between April and June 2026, which is a fast-moving surface with no compatibility promise.

The second limitation is hardware. Docker cannot reach the Apple GPU, and the README says so explicitly when explaining the commercial desktop build, which it describes as the option for people with Apple chips who want to use that GPU. On a Mac, the self-hosted stack runs the models on CPU. On a machine without an NVIDIA GPU, the same applies. Indexing a large library under those conditions is a question of time, and the README does not publish throughput figures, so there is no way to estimate from the documentation how long a given library will take.

The third is the licence. GitHub reports it as NOASSERTION, and package.json declares the license field as "Edit Mind", which is not an SPDX identifier. That is not the same as an open source licence, and the README does not explain what the terms permit for commercial or internal use. Anyone evaluating this for an organisation should read LICENSE.md before running it, and should not assume the freedoms that come with a recognised licence.

It is also the wrong tool if you want a general video editor. Edit Mind indexes and searches; it does not cut, colour or export. The desktop app is described as adding direct integration with DaVinci Resolve and Final Cut Pro, which implies the community version does not have it.

How it differs from a hosted video platform

The obvious comparison is a cloud video platform that transcribes and indexes uploads for you, and the difference is not the feature list. It is where the compute and the data sit. A hosted service takes the file, runs its own models, and returns search results; you get no control over which model version processed your footage and no ability to run the pipeline offline. Edit Mind inverts that. The Compose file mounts your media path into the containers, ChromaDB persists vectors to a named volume, and the NLP step can be Ollama on your own hardware, which the README recommends. Nothing has to leave the machine.

The cost of that inversion is operational. You are responsible for Docker file sharing, for the two .env files, for a running Ollama server if you choose the local model, and for the disk space that model weights and ChromaDB volumes consume. A hosted platform asks for none of that. The second difference is flexibility of the analysis stack. Because the ML service is Python with PyTorch, the models are part of the deployment rather than a vendor's black box, which matters if you need to know what produced a given tag. It also means you inherit the maintenance burden of that stack.

A lighter alternative for people who only need transcription is to run Whisper on its own and keep the text in a plain index. That skips the vector database, the job queue, and the four containers, and it is a reasonable choice if faces and objects are not part of your search. Edit Mind's value is in combining those signals into one query surface, not in any single model.

Maintenance, upgrades and what the licence does not tell you

Upgrades are container pulls. The Compose file references ghcr.io/iliashad/edit-mind-background-jobs:latest and ghcr.io/iliashad/edit-mind-web:latest, so a pull followed by a restart moves you to whatever was last published. That is convenient and also a risk: with a project in active development and no production guarantee, latest can change behaviour between restarts. ChromaDB is pinned more tightly at chromadb/chroma:1.3.5, and Redis and PostgreSQL are pulled by their own tags. State lives in named volumes for ChromaDB and the ML models, plus a bind mount at .data, so a container replacement does not necessarily discard your index.

The upgrade cost that the documentation does not cover is schema and index compatibility. Prisma migrations against PostgreSQL and the shape of the vectors in ChromaDB are both internal to the project, and the README does not document rollback, downgrade paths, or what happens to an existing index when the analysis models change. If you index a large library and a later release alters the embedding model, the safe assumption is that re-indexing is required, and the README does not say otherwise.

On licensing, the practical point is that "Edit Mind" in package.json is a name, not a standard identifier, and GitHub reporting NOASSERTION means the terms were not recognised as a known licence. Read LICENSE.md and decide with your own counsel whether your use fits. The README's separate commercial desktop app is a distinct product with its own pricing and refund terms, and it does not change the terms of the self-hosted version, which the README states is free and "not going anywhere".

Editorial conclusion

Adopt Edit Mind if you keep a local video archive and want semantic search over it without uploading footage anywhere, and if you are comfortable running Docker Compose and reading a .env file. Do not adopt it for production pipelines, for anything that needs a published API contract, or if you need Apple GPU acceleration, because the README states the desktop build is where that lives and Docker cannot use it. Before committing, verify three things: that your media path is added to Docker Desktop file sharing, that USE_OLLAMA_MODEL or USE_GEMINI is set with the matching host and key, and that you accept the licence in LICENSE.md, which GitHub reports as NOASSERTION and which package.json names simply as "Edit Mind".

Frequently asked questions

Is there a completely free video editor?

Edit Mind is free in its self-hosted form, but it is an indexing and search tool rather than a video editor: it does not cut or export footage. The README describes a separate commercial desktop app for macOS and Windows that adds direct integration with DaVinci Resolve and Final Cut Pro.

Is there an AI for editing video content?

Edit Mind applies AI to video analysis rather than to cutting. It uses OpenAI Whisper for transcription, YOLO for object detection, DeepFace for face recognition and scene analysis, and stores the results in ChromaDB for natural language search.

How can I search my own video library by content?

Edit Mind watches a media folder, queues new files for multi-modal analysis, and lets you search the resulting index in natural language through the web service on port 3745. The README states the whole stack runs locally in Docker Compose.

Does Edit Mind run without sending my videos to a cloud service?

It can. Setting USE_OLLAMA_MODEL to true with OLLAMA_HOST and OLLAMA_PORT keeps the NLP step on your own machine, and the README recommends Ollama as the more private option. The alternative is USE_GEMINI with a GEMINI_API_KEY, which sends that step to Google.

What do I need before installing Edit Mind?

Docker Desktop installed and running is the only prerequisite the README lists. You also need to add your video folder to Docker file sharing on macOS and Windows, and to copy .env.example, .env.system.example and docker-compose.yml into a working directory.

Official sources

  1. IliasHad/edit-mind on GitHub
  2. Issues
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/iliashad-edit-mind.svg)](https://hysenlabs.com/projects/iliashad-edit-mind)