OpenAgent: a Flask and LangGraph harness for shipping vertical agents
What if OpenAI Deep Research and Dify were one platform? OpenAgent — harness architecture for rapidly building vertical AI agents, with deep reasoning loops, visual workflows, RAG, and A2A delegation.
At a glance
- What is it?
- OpenAgent packages a Flask API, Celery workers, a Vue 3 workspace and visual workflow authoring into one repository, with Deep Research loops and A2A delegation as the headline features. The useful question is whether the harness saves you more time than the stack it commits you to.
- Who is it for?
- Adopt OpenAgent if you want a self-hosted workspace where non-engineers build workflows and engineers publish them over the documented POST /api/openapi/chat endpoint, and you accept Docker Compose, Weaviate and a provider key as the entry price. Do not adopt it if you need a small embeddable library or cannot run PostgreSQL, Redis and Weaviate alongside it.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 60 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem OpenAgent addresses is the gap between a demo agent and an operated one
Most agent repositories stop at a loop and a prompt. OpenAgent's README frames the project as an end-to-end platform for building, orchestrating, publishing and operating AI applications, and the repository layout backs that framing: there is an api directory with a Flask app and a requirements.txt, a ui directory with a Vue 3 frontend, and a docker directory holding a Compose stack. The audience is teams that already know they want agents but do not want to assemble publishing, versioning, datasets and a chat API themselves. The README lists draft, publish, analysis, version comparison and prompt comparison as workspace flows, which is the shape of a product aimed at people running several agents rather than one. If you only need a single agent behind a function call, this is more surface area than the problem requires.
Flask, Celery and LangGraph split the work across three runtime roles
The architecture section names LangChain and LangGraph for orchestration, Celery for background execution, and Flask with SQLAlchemy for the request path. That split matters. Long Deep Research runs cannot occupy a request thread, so they belong in Celery workers, while the Flask API stays responsive for chat and management calls. The README also lists Flask-SocketIO, which suggests live updates are pushed rather than polled, though the documentation does not spell out which events travel over the socket. Retrieval is declared twice: Weaviate and FAISS both appear under knowledge and retrieval, and the README describes RAG with semantic, full-text and hybrid modes. Which engine serves which mode is not stated in the material, and that is a real gap if you plan to tune recall. A2A delegation is described as routing user requests from the home assistant to published public agents, so delegation happens between published artifacts rather than between arbitrary in-process objects.
Getting the stack up takes one environment file and one Compose command
The README gives a short path. Clone the repository, then copy api/.env.example to api/.env. The minimum settings it lists are JWT_SECRET_KEY, POSTGRES_PASSWORD, REDIS_PASSWORD, WEAVIATE_API_KEY and VITE_API_PREFIX, plus at least one provider key from OPENAI_API_KEY, ATLASCLOUD_API_KEY, DEEPSEEK_API_KEY or DASHSCOPE_API_KEY. From the docker directory, docker compose up -d --build starts everything. The documented local URLs are the frontend on port 3000, the Flask API on port 5001 and Nginx on port 80. For development outside Docker, the README shows pip install -r requirements.txt followed by flask run --port 5001 in api, and npm install with npm run serve in ui, with Vite defaulting to port 5173 and the frontend resolving its API base from VITE_API_PREFIX. Prerequisites are Docker 20.10+, Docker Compose 2.x, 8 GB+ RAM recommended, and one provider key. That 8 GB figure is the README's own recommendation for the full stack, not a measurement.
The workflow node set is the part that decides whether the harness fits
Visual authoring is only useful if the node vocabulary covers your problem. The README lists nodes for LLMs, tool calls, dataset retrieval, code execution, HTTP requests, branching, text processing, template transforms and structured parameter extraction. That is broad enough for retrieval-augmented flows with conditional routing, and the presence of an HTTP request node means external systems can be reached without writing a custom tool. Two things are missing from the material. First, there is no description of how workflow state is persisted between nodes or whether a failed run can resume. Second, nothing explains how a published workflow is versioned relative to the draft the workspace shows, even though version comparison is listed as a workspace feature. If your workflows are long-running and failure recovery matters, treat those as open questions to answer from the code rather than from the README.
Both retrieval engines in the dependency list is a decision you inherit
Weaviate and FAISS solve different problems. Weaviate is a service you run and reach over the network, which fits a multi-tenant platform where datasets are shared across agents and workflows. FAISS is a library that keeps indexes in process, which fits a single service with a fixed corpus. The README lists both without saying when each is used, so a deployment inherits the operational cost of the service and the memory cost of the library. The Compose stack requires WEAVIATE_API_KEY, so Weaviate is part of the default path. The practical consequence is that a small team running OpenAgent for one internal agent still operates a vector database. That is the clearest case where the platform is heavier than the task.
Dify and LangGraph take different positions on the same problem
Dify is the closest comparison the README itself invites, and the difference is where the agent logic lives. Dify presents a hosted workspace where workflows and agents are configured through its own abstractions, and the platform owns the execution model. OpenAgent keeps the orchestration in LangGraph and LangChain inside a Flask codebase you can read and modify, with the Vue workspace sitting on top of an API you also control. LangGraph on its own is the opposite trade: a library with no workspace, no publishing layer and no dataset management, so you write the product around it. OpenAgent sits between those two positions, which is its main argument. The cost of that position is that you maintain a Compose stack, a Celery deployment and a provider configuration rather than a library version.
Maintenance load tracks the v1.1.x cadence and the MIT licence
The repository is not archived, the default branch is main, and the three most recent releases are v1.1.2, v1.1.3 and v1.1.4, published between 2026-05-26 and 2026-06-15. That is roughly one release every two to three weeks across that window, which tells you the surface is still moving and that pinning a version is worth considering for production. The licence is MIT, which permits commercial use and modification; this is not legal advice, and you should read the LICENSE file and your provider terms separately, particularly for the model vendors listed in the README. Upgrade cost is dominated by the environment file and the Compose stack rather than Python dependencies, because schema changes to PostgreSQL or Weaviate would surface there. The README does not describe a migration path between versions, so back up the database before pulling a new tag.
Editorial conclusion
Adopt OpenAgent if you want a self-hosted workspace where non-engineers build workflows and engineers publish them over the documented POST /api/openapi/chat endpoint, and you accept Docker Compose, Weaviate and a provider key as the entry price. Do not adopt it if you need a small embeddable library or cannot run PostgreSQL, Redis and Weaviate alongside it. Before committing, verify the api/.env.example keys against your deployment, confirm which retrieval backend your RAG path actually uses given that both Weaviate and FAISS appear in the stack, and read the last few release notes to judge how much the v1.1.x line changes between versions.
Community notes