Dousen Documentation
Dousen connects Jira, Perforce, and your DCCs — Blender, Maya, Houdini, 3ds Max, Substance Painter, Substance Designer, and Unreal Engine — into one unified workflow. A changelist knows which Jira ticket it belongs to, an asset name is checked against your project's rules the moment it's exported, and publishing from one tool hands work straight to the next one — so artists spend their time on art, not on the handoffs between tools.
Artists never touch the server directly. All artist UI lives in DousenDesktop and the Unreal Engine plugin. The server (DousenCore) is admin and infrastructure, configured entirely through the web portal.
The three planes
Every Dousen deployment is one to three of these, depending on whether the studio is on the cloud or self-hosted. Everything between them is plain HTTP/JSON — no proprietary protocol to firewall around.
| Plane | Runs where | What it's for |
|---|---|---|
| Cloud control plane | Dousen's cloud, port 8090 (DousenControl) | Manages studios/orgs, subscriptions, and Ed25519-signed license tokens, and provisions a studio instance per tenant. Cloud studios only — a self-hosted studio never runs this. |
| Studio instance | A server, port 8080 (DousenCore) | The one every artist and DCC ultimately talks to: REST API, the web admin portal at
/portal/, MariaDB, the Perforce connection, and the Jira webhook. Source of truth for
changelists, users, conventions, and validation history. |
| DCC bridge relay | Each artist machine, 127.0.0.1:8766 (inside DousenDesktop) |
A local, loopback-only relay that lets DCCs and Unreal hand work to each other — publish, register, poll — without a round trip to the server. |
The bridge is a poll-based HTTP relay, not a server that DCCs hold an open connection to. An artist publishes an event from one DCC, the relay fans it out, and other apps — including Unreal — pick it up on their next poll (about twice a second).
Port reference
| Port | Service | Reachable from |
|---|---|---|
| 8090 | DousenControl REST (cloud control plane) | Dousen's cloud only — studio instances call out to it for license heartbeats; a self-hosted studio never runs it. |
| 8080 | DousenCore REST + web portal (/portal/) |
Every DousenDesktop and DousenUE install for that studio; whatever host/network the admin exposes it on (see Self-hosted install). |
| 8766 | DousenDesktop bridge relay | Loopback only, 127.0.0.1 — the DCC addons and UE plugin running on that same artist
machine. Not reachable over the network. See Bridge API. |
Cloud vs. self-hosted
| Aspect | Cloud | Self-hosted |
|---|---|---|
| Who runs DousenCore | Dousen, provisioned per tenant by DousenControl | You, with the Docker Compose bundle under deploy/self-hosted/ |
| Licensing | Issued and renewed automatically by DousenControl | You hold the Ed25519 license key and public key yourself; the instance verifies it offline, with a 14-day grace period past expiry |
| Signing in | Cloud SSO exchange from the control plane, with an optional browser OAuth (PKCE) flow; accounts spanning multiple studios get a studio picker | Local password checked by the instance itself, or delegated to your LDAP/Active Directory if
DOUSEN_AUTH_MODE=ldap is configured |
| Getting an account | Currently manual during the free studio beta — see Quick start | Install the stack, then create the first admin user yourself in /portal/ |
The components
| Component | Plane | What it does |
|---|---|---|
| DousenControl | Cloud control plane | SaaS control plane binary: orgs, tenants, subscriptions, Stripe billing, license issuance, Kubernetes/Helm tenant provisioning. |
| DousenCore | Studio instance | The REST backend and source of truth for changelists, users, naming conventions, and validation history.
Serves the web admin portal, talks to MariaDB and Perforce, and receives Jira webhooks at
/webhooks/jira. |
| DousenDesktop | Artist machine | A Qt6 system-tray app. It is a REST client to DousenCore, a direct Jira client, the DCC bridge relay, and a DCC launcher with source-asset tracking and auto-update. |
| DousenUE | Artist machine (Unreal Engine 5 editor) | An editor plugin that talks to DousenCore's REST API and polls the desktop bridge relay for events, auto-reimporting assets. It never talks to Jira directly. |
Key concepts
Tasks
Dousen stores no tasks of its own. Jira is the single source of truth. DousenDesktop fetches issues directly using each artist's own Jira credentials and renders them as HTML, so you see the same tasks you would in Jira.
Changelists
Every Perforce changelist opened through Dousen is keyed to a Jira issue key — for example
DOU-142. That link is what keeps your work in Perforce tied to the task it belongs to, and it's
what lets a changelist submit automatically transition the Jira issue if an admin has configured it.
The bridge
When an artist publishes from one DCC, the local relay fans the event out to the other apps on that machine. Unreal Engine picks the event up and auto-reimports the changed asset — no manual export-and-import shuffle. The same channel carries the active Jira task/changelist to every running DCC, and lets studio tools join in exactly like the built-in addons.
Naming conventions
Asset naming rules are defined per project — as YAML, or as Lua for computed rules — stored in DousenCore, and compiled to a single JSON document every client caches for 5 minutes. Names are assembled structurally from prefixes, suffixes, and dimensions, not from a single text template, so a name assembled in Blender matches what Unreal expects.
Validation
The same document that defines naming also carries validators — automatic checks that run in the DCC before an asset is exported. Errors block the export; warnings are advisory. Admins choose which rules run and at what severity; artists just see the results.
Licensing & accounts
Every studio instance runs against an Ed25519-signed license that it verifies offline, with a 14-day grace period past expiry so a renewal is never a fire drill. Seats are enforced per plan, and every account plugs into one of three sign-in modes — local password, an external LDAP/AD directory, or cloud SSO — with a single active device per account.
Roles
A studio instance checks access as effectively admin vs. non-admin: the roles are
admin, producer, and artist, but only admin unlocks the
portal's write endpoints (conventions, validators, settings, users). Cloud studios additionally have
owner/admin/member roles on the control-plane org — an org
owner or admin becomes an instance Admin when they sign into their
studio; everyone else becomes an Artist. Full breakdown: User
& auth management.
Full documentation map
Every page in the sidebar, grouped the same way and in the same order. If you already know what you're looking for, this is the fastest way to jump there.
Getting started
| Page | Covers |
|---|---|
| Overview | This page — what Dousen is, the three planes, the five components, ports, and where to go next. |
| Quick start | Zero-to-working-pipeline walkthrough: get an account, configure a project, install DousenDesktop, run onboarding, and verify the first asset lands in Unreal. |
User guide
| Page | Covers |
|---|---|
| Desktop app | Signing in, the tray icon, the Jira task panel, the DCC launcher bar, the Bridge tab, and auto-update — the day-to-day hub on each artist machine. |
| DCC addons | What the Dousen panel does inside each of the six DCC addons — Blender, Maya, 3ds Max, Houdini, Substance Painter, and Substance Designer — plus how Unreal Engine joins the bridge as the seventh participant. |
| Jira tasks | How DousenDesktop fetches issues straight from Jira Cloud with your own credentials — Dousen stores no tasks of its own. |
| Perforce | Changelists keyed to a Jira issue, file-lock visibility inside the DCC, and Perforce Streams support. |
| Unreal Engine | Installing and configuring the DousenUE editor plugin: landing DCC exports at the convention-correct path with materials and Nanite set, naming checks on import, and Open in DCC. |
Admin guide
| Page | Covers |
|---|---|
| Naming conventions | Authoring the per-project naming document in YAML or Lua, the arbitrary-depth taxonomy, and how it compiles and gets cached by clients. |
| Asset validation | The full validator reference — every built-in rule by category, the catalog system, the Nanite/NonNanite gate, and how to write a custom validator plugin. |
| Settings reference | Every project-level YAML document and scalar field editable in the web portal. |
| Loading studio tools | Three ways to keep loading your existing pipeline code alongside Dousen's addon — startup scripts, extra validator paths, and per-machine options. |
| User & auth management | The two planes' users and roles, the three sign-in modes, sessions/tokens, and how accounts get created on each plane. |
| Self-hosted install | Running DousenCore yourself with the Docker Compose bundle — install.sh, the manual
setup steps, and LDAP configuration. |
Reference
| Page | Covers |
|---|---|
| Bridge API | Full byte-for-byte reference for the local bridge relay's HTTP endpoints, for studio tools that want to participate like a built-in addon. |
| Troubleshooting | Symptom-first fixes grouped by where you see them, plus where every log file lives. |
Start here, by role
The docs are organized by what you're trying to do, not by which sub-app owns the feature. Pick your role:
| You are… | Start with | Then read |
|---|---|---|
| A studio admin setting up a new studio | Quick start | Self-hosted install (if not on the cloud), Settings reference, User & auth management |
| An artist working day to day | Desktop app | DCC addons, Jira tasks, Perforce, Unreal Engine |
| A TA setting up conventions and validators | Naming conventions | Asset validation, Settings reference, Loading studio tools |
| An integrator wiring up a studio tool | Bridge API | DCC addons (event types and per-task context) |
Whatever you're doing, if something doesn't behave the way these pages say it should, Troubleshooting is symptom-first and usually faster than re-reading a guide end to end.
Where to next
Quick start
Get an account, configure a project, install DousenDesktop, and run the onboarding wizard.
DCC addons
How Blender, Maya, Houdini, 3ds Max, and Substance connect to the bridge.
Naming conventions
Define per-project naming rules in YAML that every client follows.
Asset validation
Catch problems before export with project-wide validators.
Desktop app
The tray app that ties it together — tasks, launcher, bridge, updates.
Troubleshooting
Symptom-first fixes, and where every log file lives.