한국어 문서: README.ko.md
DeskRPG is a 2D pixel-art virtual office you can self-host. Create LPC characters, enter shared channels, walk around a live office map, hire AI NPC coworkers backed by Hermes agents, assign tasks, receive reports in-world, and run AI meetings in a browser.
DeskRPG is built for people who want a playful, self-hosted workspace rather than another plain chat room.
- Website:
https://deskrpg.com(planned) - Source code:
https://github.com/dandacompany/deskrpg - Version:
v2026.9.9
- Create your own pixel-art office avatar with LPC-based character customization.
- Join or self-host shared office channels with live multiplayer movement.
- Hire AI NPCs, bind them to Hermes agent profiles, and talk to them in-world.
- Delegate tasks, request reports, resume stalled work, and review progress in a task board.
- Run AI meetings in a dedicated meeting room with meeting notes and multi-agent discussion.
- Build or upload your own office maps with the browser-based map editor.
![]() |
![]() |
| Getting Started | NPC Chat and Tasks |
![]() |
![]() |
| Meeting Room | Map Editor |
Choose one of these six ways to start DeskRPG.
This is the simplest self-hosted path if you want DeskRPG as an installed app instead of a cloned repo.
npx deskrpg init
npx deskrpg startDeskRPG stores mutable runtime state under ~/.deskrpg/:
~/.deskrpg/.env.local~/.deskrpg/data/deskrpg.db~/.deskrpg/uploads/~/.deskrpg/logs/
Open http://localhost:3000.
Published npm package: deskrpg
git clone https://github.com/dandacompany/deskrpg.git
cd deskrpg
npm install
cp .env.example .env.local
npm run setup
npm run devOpen http://localhost:3000.
This is the best option if you want to run the full app directly from the repo.
git clone https://github.com/dandacompany/deskrpg.git
cd deskrpg
npm install
npm run setup:lite
npm run devSQLite stores data in data/deskrpg.db.
Recommended if you expect multiple users or want a more durable database.
cp .env.example .env.docker
docker compose --env-file .env.docker up -dBefore the first run, open .env.docker and set:
JWT_SECRETPOSTGRES_PASSWORD
DeskRPG will open on http://localhost:3102.
The default image is dandacompany/deskrpg:latest.
If you want to pin a release, change DESKRPG_IMAGE in .env.docker to something like dandacompany/deskrpg:2026.4.6.
If you prefer the explicit file path version, you can run:
docker compose --env-file .env.docker -f docker/docker-compose.external.yml up -dRecommended if you want the simplest single-machine setup.
JWT_SECRET=change-me docker compose -f docker/docker-compose.lite.yml up -dDeskRPG will open on http://localhost:3102.
To pin a specific image version, add DESKRPG_IMAGE=dandacompany/deskrpg:2026.4.6 before the command.
Use SQLite if you want to get started quickly. Use PostgreSQL if you want a setup that is easier to keep long term.
Important environment variables:
JWT_SECRETPOSTGRES_PASSWORD(PostgreSQL Docker setup)DESKRPG_ALLOW_HOST_HERMES_PROFILES(optional; lets a loopback gateway read~/.hermes/profileson the host — off by default)
For production, always set a real JWT_SECRET.
Gateway URL and token are not environment variables. They are registered inside the app on the
My Gateways page and then attached to a channel from Settings -> Channel Settings -> AI Connection.
AI NPCs, task automation, and AI meetings all run through a Hermes gateway.
DeskRPG does not ship a bundled agent runtime. Run a Hermes Agent API server yourself — on the same machine or on any host you can reach — and note two things from it:
- the base URL it listens on (for example
http://127.0.0.1:8642) - the API key of the profile you want DeskRPG to use
Hermes config is machine-scoped but auth is per profile, so each profile carries its own key.
Connecting it to DeskRPG then takes three steps.
1. Register the gateway
Open My Gateways from the top-right menu and choose New gateway:
Display name— anything you will recognise laterHermes Gateway URL— for examplehttp://127.0.0.1:8642Token— the API key for that gateway
Save, then run the connection test. A failed test tells you what went wrong rather than just failing, so read the message before changing anything.
2. Add Hermes profiles
A gateway can serve several agent profiles, and each profile has its own key. Add them on the same page — profiles are what NPCs actually bind to. Registering the gateway alone is not enough.
3. Attach the gateway to a channel
Enter a channel, then Settings -> Channel Settings -> AI Connection, pick your saved gateway, test,
and save. The header badge changes to AI Connected once it takes.
Now you can hire NPCs. Each NPC is bound to one Hermes profile at hire time, and you can rebind it later without firing it.
- Every user enters as a character.
- Character appearance is LPC-based and composed from layered sprite parts.
- Character creation is required before entering a channel.
- A channel is a shared office space.
- Channels can be public or restricted depending on access and group rules.
- Channel maps come from map templates.
- NPCs live inside channels.
- Each NPC is bound to one Hermes profile, and can be rebound later without being fired.
- One-on-one conversations are stored per character, so history survives a server restart.
- NPCs can be called over, sent back, edited, reset, and fired from in-app menus.
- You can assign work to NPCs through conversation.
- Tasks move through
대기,진행중,중단,완료. - NPCs can be nudged automatically or manually to continue working.
- Important reports are delivered in-world by the NPC walking over to the player.
- DeskRPG includes a dedicated meeting room.
- AI meetings are channel-scoped and orchestrated through the channel's Hermes gateway.
- Meeting notes are stored and visible from the header.
- The browser map editor supports Tiled-style map workflows.
- You can upload templates, manage project-linked assets, and reuse maps for new channels.
- This is a major subsystem of the project, not a side tool.
- Login is required even if you have an invite code.
- Invite codes are channel access helpers, not anonymous access tokens.
- The current default in-app office tiles and object textures are generated in code at runtime.
- LPC avatar sprite assets are bundled separately and have their own credits and license notes.
- Project license: LICENSE.md
- Third-party licenses: public/third-party-licenses.html
- LPC avatar credits: public/assets/spritesheets/CREDITS.md
- LPC avatar license notes: public/assets/spritesheets/LICENSE-assets.md
- Full LPC credits data: public/assets/spritesheets/CREDITS.csv
- YouTube: @dante-labs
- Email:
dante@dante-labs.com - Buy Me a Coffee:
https://buymeacoffee.com/dante.labs




