After setup, your directory should look like this:
faceplate_stack/
├── docker-compose.yml
├── .env
├── faceplate/
│ ├── DB/
│ └── logs/
└── openclaw/
├── config/
└── workspace/
Create the directory and clone the repository:
mkdir -p ~/Documents/faceplate_stack/openclaw
cd ~/Documents/faceplate_stack/openclawClone Openclaw configurations and skills
git clone https://github.com/faceplatekirill/fp_openclaw.git .After cloning, you'll have the openclaw folder with all required contents (config, workspace, etc.).
Create the volume directory structure:
mkdir -p faceplate/DB
mkdir -p faceplate/logsNote:
faceplate/DB— SCADA database storagefaceplate/logs— application logsopenclaw/config— OpenClaw configuration filesopenclaw/workspace— working environment (agents, memory, tools)
The docker-compose.yml file is already configured to bring up two services:
- Main application (backend + UI + DB)
- Exposed ports:
900080007000
- Persistent volumes:
- Database →
faceplate/DB - Logs →
faceplate/logs
- Database →
- AI / agent system
- Exposed port:
18789
- Persistent volumes:
- Config →
openclaw/config - Workspace →
openclaw/workspace
- Config →
File .env contains additional information for Docker compose
Start the full Stack in detached mode:
docker compose up -dView logs:
docker compose logs -fStop the stack:
docker compose downOnce running, the services are available at:
| Service | URL |
|---|---|
| Faceplate Studio | http://localhost:9000/fp/studio |
| Faceplate Runtime | http://localhost:9000/fp/runtime |
| OpenClaw | http://localhost:18789 |
Faceplate default credentials
Username
systemPassword
111111The openclaw/workspace directory contains the stateful part of the system:
| Path / File | Description |
|---|---|
AGENTS.md |
Agent definitions |
MEMORY.md |
Memory configuration |
memory/ |
Persistent memory store |
TOOLS.md |
Tool definitions |
skills/ |
Custom skills |
extensions/ |
Extensions and plugins |
PROJECT_KB |
Project knowledge base |
KNOWLEDGE_BASE |
General knowledge base |
Do not delete this folder on restart — it holds the agent's persistent state.
If images or configs have changed:
docker compose down
docker compose up -d --build1. Port already in use
sudo lsof -i :90002. Permission denied on directories
sudo chown -R $USER:$USER .3. Container fails to start
docker compose logs faceplate
docker compose logs openclaw4. Openclaw UI requires Gateway Token
Paste Token from file openclaw/config/openclaw.json into Openclaw UI Gateway Token require field.
5. Openclaw UI requires pairing
When Openclaw UI Token require pairing, you need to approve your session.
docker exec -it faceplate_openclaw_platform /bin/bashYou will be directed into Container.
Into container run command:
openclaw devices listYou will get list of Pending requests. Copy the Request ID from this list.
Paste this Request ID into next command:
openclaw devices approve Request_IDNow you can use Openclaw UI
Faceplate. Openclaw UI requires pairing
When Openclaw UI Token require pairing, you need to approve your session.
This stack brings up two interconnected services:
faceplate— backend, UI, and databaseopenclaw— AI agent system
Faceplate docs and information you can get here: https://github.com/faceplate-docs/faceplate/tree/dev/docs/en