Changing the Initial Password (Commissioning Required)
This is the procedure for cleaning up accounts on screens that humans log into, after installing the AI stack. Rotation of keys used between services is covered in Changing Passwords · API Keys.
Admin Console Account
The AI Admin Console sets its account via environment variables. Since no user is stored in the database, there is no on-screen password change function.
| Environment Variable | Meaning | Default |
|---|---|---|
PI_ADMIN_USER | Login ID | admin |
PI_ADMIN_PASSWORD | Login password | None — must be specified at install time |
PI_ADMIN_SESSION_SECRET | Session signing key | Generated by the installer (a random value starting with ppss_) |
The console container (plantpulse-admin-api) receives these values under the names ADMIN_AUTH_USERNAME · ADMIN_AUTH_PASSWORD ·
ADMIN_SESSION_SECRET. Compose carries them across, so what the operator edits is the PI_* name
in the table above.
PI_ADMIN_PASSWORD in the template is a placeholder (CHANGE_ME_…), and the installer does not generate
this value — because a human logs in with it. If it stays a placeholder, START=1 startup is refused, and if left blank
the console refuses to start. In other words, the "we were still using the default" scenario cannot happen here.
Since the value set at install time becomes the operating value, check once at commissioning time that it
isn't a weak value chosen temporarily.
How to Change It
The console account is not included in the list of keys managed by bin/passwd.sh.
Edit the environment file directly and recreate the container.
sudo vi /etc/kopens/plantpulse-ai.env # PI_ADMIN_PASSWORD 수정
cd /opt/kopens/plantpulse-ai-docker/bin
./up.sh # 컨테이너 재생성
PI_ADMIN_SESSION_SECRET is generated once at install time. Changing its value invalidates all
logins up to that point. If left blank, compose refuses to start.
LiteLLM Admin Screen Account
This is the account humans use to access the model gateway (LiteLLM)'s admin screen http://<AI 서버>:4000/ui
(or whatever port, if you changed it to PI_LITELLM_PORT). It is not used for API calls (those use the master key or virtual keys).
| Environment Variable | Meaning | Default |
|---|---|---|
PI_LITELLM_UI_USERNAME | Login ID | admin (commented out in the template) |
PI_LITELLM_UI_PASSWORD | Login password | admin123! |
admin123! is the value written in the template, and the installer does not regenerate it. Since port 4000 is open on the LAN,
leaving it as-is allows anyone on the same network to access the gateway admin screen.
PI_LITELLM_UI_PASSWORD is required — if it is empty or missing, compose refuses to start.
Without this value, LiteLLM uses the master key (PI_LLM_API_KEY) as the UI password, so this exists separately to
prevent a human from having to type in a key that opens the entire API.
The way to change it is the same as for the console account — since it's not in the passwd.sh list, edit the environment
file and recreate with ./up.sh.
This account was introduced in 2026.09. Since the installer does not recreate an existing environment file,
older files will not have this line. Upgrading as-is will halt startup with an error saying PI_LITELLM_UI_PASSWORD is missing.
Add it directly to /etc/kopens/plantpulse-ai.env (using your newly chosen password as the value).
PI_LITELLM_UI_PASSWORD=<password>
Infrastructure Accounts and API Keys
These are credentials used between services. bin/passwd.sh holds the target list.
cd /opt/kopens/plantpulse-ai-docker/bin
./passwd.sh --list # 무엇을 바꿀 수 있는지 (현재값은 마스킹)
./passwd.sh --list --show # 현재값 전체
./passwd.sh PI_INBOUND_API_KEY
./passwd.sh --generate PI_INBOUND_API_KEY # 값을 직접 만들지 않고 도구가 만들게
| Key | What |
|---|---|
PI_NEO4J_PASSWORD | Neo4j — change both instances together: the LightRAG knowledge graph and the factory graph mirror |
PI_RAG_API_KEY | RAG API key — shared by copliot-web · lightrag · rag-api |
PI_VLLM_API_KEY | vLLM API key — shared by lightrag · insight-api |
PI_LLM_API_KEY | LiteLLM master key |
PI_LITELLM_SALT_KEY | LiteLLM salt key — 🔴 Changing this breaks decryption of already-registered external model keys. Do not rotate it |
PI_INBOUND_API_KEY | Backend inbound key — received by rag · insight · parser · vision · digital thread (if empty, those five refuse to start), and called with the same value by copilot · admin console |
PI_COPILOT_SECRET_KEY · PI_DT_SECRET_KEY are generated by the installer at first install, and are not values to change at commissioning time
— changing them makes credentials sealed with those keys undecryptable. There are two things to do.
- Check that the values exist. If
PI_COPILOT_SECRET_KEYis empty, Copilot refuses to start. Hosts upgraded from 2026.09 or earlier may not have the line at all → Environment Variable Settings - Make sure both values are included in env file backups.
If replacement is truly necessary, follow the _PREVIOUS procedure → Changing Passwords · API Keys
If empty, the pre-start check will not bring the stack up at all, and backend services each refuse to start individually
(from the 2026.10 re-release onward — before that, services treated "no key" as a pass). However, the CHANGE_ME_… placeholder
is not an empty value, so it passes that check, and its value is the same string across all installations. Since the
installer replaces the placeholder with a new value, check right after installation with bin/doctor.sh that no placeholder
remains. Rotation follows the order of passwd.sh: edit the file first, then restart. Follow the same order when editing manually.
PI_RAG_API_KEY · PI_VLLM_API_KEY · PI_INBOUND_API_KEY have multiple consumers. If you change only one place, the rest will fail authentication,
so change via passwd.sh and restart the entire stack.
Verification
# 콘솔이 떴는가 — HTTP 5959 · HTTPS 5960 (2026.09 까지는 9080)
curl -sf http://127.0.0.1:5959/health && echo OK
curl -sfk https://127.0.0.1:5960/health && echo OK
Confirm directly in a browser that login with the old password is blocked.
What This Page Does Not Cover
| Target | Where |
|---|---|
| Backend inbound key · LLM key · Neo4j, etc. | Changing Passwords · API Keys |
Public API (/api/v1) machine authentication key CO_API_V1_KEY (CH_API_V1_KEY until 2026.09) | Environment Variable Settings |
| AI Chat Web user accounts | Follows the platform user system → Platform User Management |
| Initial accounts for Platform·Edge·Studio | See the same-named page in each product's documentation |
Related Documents
- AI Admin Console — Console usage and session policy
- Changing Passwords · API Keys — Key rotation overview
- Installation and Configuration