ArcReel: a self-hosted AI video workspace that keeps characters consistent across shots
AI Agent 驱动的开源可自部署视频工作台:将小说与剧本转为角色、场景、道具资产、分镜、视频和剪映草稿,支持跨镜头一致性、多供应商与费用追踪 | Self-hosted AI video workspace for stories, storyboards and short-form video production
At a glance
- What is it?
- ArcReel turns a novel, a finished script or product footage into character, scene and prop assets, storyboards, video clips and a Jianying draft. It is a Docker-deployed Python application under AGPL-3.0, and the parts worth judging are the consistency mechanism, the provider configuration and the export boundary.
- Who is it for?
- Adopt ArcReel if you already have a script or novel and want a self-hosted pipeline where asset images are reused across shots and spend is visible before generation. Do not adopt it if you expect a finished video from a single prompt, or if your editing target is CapCut rather than the mainland China version of Jianying, because the README states that CapCut compatibility has not been verified.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 2 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 28, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The problem ArcReel targets: continuity between shots, not clip generation
Generating one short video clip from a prompt is a solved commodity. Generating forty clips that share the same protagonist, the same costume and the same room is not, because most text-to-video tools treat each generation as independent. ArcReel is built around the opposite assumption. The README describes the pipeline as converting a novel, a finished script or product material into character, scene and prop assets first, and only then into storyboards, video clips and a final cut. The assets are the point. A reference image produced for a character is reused across storyboards, which is how the project claims cross-shot visual consistency. It also states that any single asset can be redone and that historical versions can be rolled back, so a bad regeneration does not force a restart of the whole project.
The intended users are visible in the README's own framing: AI comic drama and novel adaptations, narrated or commentary short videos, and advertising or product shorts. That is a production team or a solo creator who has source material longer than a prompt, who needs to review intermediate output, and who cares about how much each stage costs. It is not aimed at someone who wants a one-line prompt to return a finished video.
How the pipeline is structured, from source text to a Jianying draft
The README publishes a flow diagram with seven stages. Source material (novel, finished script or product material) goes into content analysis and project planning. That produces character, scene and prop assets. Those assets feed episode breakdown and a structured script, which feeds storyboard images and multi-panel storyboards, which feed video clips and narration audio tracks. From there the path splits: either final composition, or export as a Jianying draft.
The README states that every stage can be orchestrated by an agent or reviewed, adjusted and regenerated by the user in the workspace. That duality is the architectural claim. Underneath it, the repository layout shows a FastAPI server with SQLAlchemy over either SQLite or PostgreSQL, Alembic migrations, and a separate frontend directory built with pnpm. The pyproject.toml lists claude-agent-sdk, google-genai, openai, xai-sdk and volcengine-python-sdk as dependencies, which matches the README's description of unified configuration for text, image, video and TTS capabilities across multiple providers. The agent runtime, task queue, provider abstraction and data layer are documented separately under the architecture page at docs.arc-reel.com/dev/architecture.
One detail in the dependency list is worth flagging for anyone evaluating the export story: pyjianyingdraft is pinned to >=0.2.6,<0.3. The draft export is not a bespoke writer, it is a library with a narrow version range, so upgrades of that library are gated by ArcReel's own release cadence.
Installing ArcReel with Docker Compose and reaching the settings page
The README's quick start assumes Docker and Docker Compose are already present. Clone the repository, move into the deploy directory, copy the environment template and bring the stack up:
git clone https://github.com/ArcReel/ArcReel.git
cd ArcReel/deploy
cp .env.example .env
docker compose up -dAfter that the workspace is served at http://localhost:1241. The default username is admin. If AUTH_PASSWORD is left empty in .env, the README states that a password is generated on first launch and written back into deploy/.env, so the file changes on disk during startup.
Two warnings in the README matter more than the install itself. First, the default Compose file publishes port 1241 on all host network interfaces. The README explicitly says not to expose the service directly to the public internet, and points to the deployment documentation for reverse proxy and HTTPS configuration. Second, .env.example documents an AUTH_ENABLED kill switch that defaults to true; setting it to false skips login and token checks entirely, and the file says to use that only when an independent network boundary already confines ArcReel to a trusted local environment.
Once logged in, the first real step is not creating a project. It is opening the settings page and configuring the ArcReel Agent plus the text, image and video generation providers you intend to use. Until those are set, there is nothing for the pipeline to call. The complete first-run walkthrough lives at docs.arc-reel.com/guide/getting-started, and provider selection is documented at docs.arc-reel.com/guide/providers.
Cost tracking is a first-class feature, and that shapes the workflow
The README lists four properties of the pipeline, and one of them is that models and costs are manageable: text, image, video and TTS capabilities are configured in one place, and fees plus actual usage can be viewed before and after generation. That is unusual enough to be the deciding factor for some teams. Video generation is priced per second of output, and a storyboard that expands into dozens of clips can burn a budget before anyone notices.
A pre-generation cost view changes how the tool is used. You can review a storyboard, see what the clips would cost, and cut panels before spending rather than after. The trade-off is that this only works if the provider pricing data ArcReel holds is accurate for your account, and the README does not describe how pricing is sourced or how it handles providers with tiered or negotiated rates. Treat the pre-generation figure as an estimate to sanity-check, not as a billing record.
The same section of the README says key stages can be confirmed and single assets regenerated. Combined with cost display, the intended rhythm is: generate cheap assets, review them, then spend on video only for storyboards you have accepted.
Where ArcReel is the wrong tool
The export boundary is the clearest limitation, and the README states it plainly: draft export targets the mainland China version of Jianying, and compatibility with CapCut has not been verified. If your editing workflow is CapCut, you are outside the tested path. If you do not use either editor, the draft export is dead weight and the composed video output is your only delivery route.
The second limitation is the shape of the input. ArcReel is organized around source material that is longer than a prompt: a novel, a finished script or product footage. If you have an idea and no script, the content analysis stage still has to produce one, and there is no documented path where the tool invents a story from nothing.
The third is operational. This is a server application with a database, background task queue and a set of external model providers. The README points to separate documentation for PostgreSQL, upgrades, backups and reverse proxies. Running it means running infrastructure. The SQLite default keeps the initial setup small, but the existence of a dedicated SQLite-to-PostgreSQL migration page implies that SQLite is a starting point rather than the intended production store.
Finally, the agent orchestration depends on claude-agent-sdk, and the README does not describe what happens when the agent's underlying model is unavailable or rate-limited mid-pipeline. The architecture page is the place to check; the README is silent on it.
How ArcReel differs from a hosted text-to-video service
The obvious alternative is a hosted text-to-video product, where you type a prompt and receive a clip. The difference in approach is not quality, it is where the state lives. A hosted generator holds the prompt, the model choice and the output; each request is independent, and consistency between requests is your problem to solve by re-describing the character every time.
ArcReel inverts that. The persistent objects are the assets (characters, scenes, props), the storyboards and the project record, all stored in your own database on your own machine. The generation providers become interchangeable backends behind a configuration page. That is why the project can offer rollback of individual assets and a cost view across stages: it owns the intermediate state that a hosted service discards.
The cost of that inversion is maintenance. A hosted service upgrades models for you. ArcReel ships releases frequently, and the repository shows v0.28.0 on 2026-08-30, v0.29.0 on 2026-09-05 and v0.30.0 on 2026-09-10, with Alembic migrations in the tree. You are the operator. If you want a clip and nothing else, the hosted route is less work. If you want the same character in forty shots and a record of what each one cost, the hosted route does not have a place to put that.
Licence, upgrade cadence and what maintenance actually costs
ArcReel is licensed under GNU Affero General Public License v3.0, with additional terms in the NOTICE file. AGPL-3.0 is a network copyleft licence: if you modify ArcReel and let users interact with it over a network, the licence's source-availability obligation is generally understood to apply to your modified version. The README acknowledges that this does not suit every organization and offers a commercial contact address, [email protected], for deployments, white-labelling or redistribution without AGPL obligations. That is a licensing decision for your own counsel, not something this article can settle.
On maintenance, the repository is not archived and the last push was on 2026-09-10. Release history shows a roughly weekly cadence across late August and early September 2026, and the version string in pyproject.toml is managed by release-please rather than edited by hand, which means version bumps come from the release tooling. Practically, upgrading means pulling a new image or new source, then running the Alembic migrations that ship with the release. The README does not document rollback for a failed upgrade; the deployment and migration pages are the places to check before you upgrade a database you care about. Budget for reading the changelog before each version bump rather than tracking the main branch.
Editorial conclusion
Adopt ArcReel if you already have a script or novel and want a self-hosted pipeline where asset images are reused across shots and spend is visible before generation. Do not adopt it if you expect a finished video from a single prompt, or if your editing target is CapCut rather than the mainland China version of Jianying, because the README states that CapCut compatibility has not been verified. Before committing, verify three things in your own deployment: that your chosen text, image, video and TTS providers are all configurable in the settings page, that the Jianying draft opens in your installed editor, and that the PostgreSQL migration path documented under ops/migrate-to-postgres matches the data you care about. The last push to the repository was on 2026-09-10.
Frequently asked questions
How do I use ArcReel?
Clone the repository, copy deploy/.env.example to deploy/.env and run docker compose up -d from the deploy directory, then open http://localhost:1241 and log in as admin. Before creating a project, open the settings page and configure the ArcReel Agent plus your text, image and video providers. The full first-run walkthrough is at docs.arc-reel.com/guide/getting-started.
Is ArcReel legitimate?
It is an open source project published on GitHub under AGPL-3.0, with a homepage at arc-reel.com and documentation at docs.arc-reel.com. The repository is not archived and the last push was on 2026-09-10, with v0.30.0 released the same day. Whether it suits you depends on your providers and your editing target, which you can verify in your own deployment.
What port does ArcReel use by default?
The workspace is served on port 1241, and the Dockerfile exposes that port. The README warns that the default Compose configuration publishes 1241 on all host network interfaces, so it should not be exposed directly to the public internet without authentication and a reverse proxy or tunnel.
Can I use ArcReel with CapCut instead of Jianying?
The README states that draft export targets the mainland China version of Jianying and that CapCut compatibility has not been verified. If your editing workflow is CapCut, the draft export is outside the documented path, and composed video output is the delivery route the README describes.
Does ArcReel need a GPU?
The README does not describe a local GPU requirement. Generation is delegated to configured text, image, video and TTS providers, and one listed sponsor advertises ComfyUI support as an alternative to running your own GPU. The Docker image installs ffmpeg and the Python stack, not a model runtime.
Official sources
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.
[](https://hysenlabs.com/projects/arcreel-arcreel)