# NetVM Account Registry One row per agent. All data in columns — no joins, no translation. The `agent` name is the canonical identifier used everywhere: node name, chrome-box profile, API `--account`, and the agent's display name. ## Schema | Column | Description | |--------|-------------| | agent | Canonical name. Used for node, profile, API account. | | node | NetVM node name (== agent). | | profile | Chrome-box profile (== agent). | | login_type | How this session was authenticated: `email_otp`, `phone_otp`, `password`, `instagram` | | meta_label | Label shown in Meta account selector (e.g., "Meta Account", "piparada") | | email | Email used for login (if email_otp). Never store passwords. | | phone_otp | `yes` if phone OTP was used. Never store the phone number. | | instagram_linked | `yes`/`no`/`unknown` — whether Meta account has IG linked | | status | `active`, `pending_auth`, `needs_signup`, `expired`, `disabled` | | egress_ip | Current WARP egress IP for the node | | cdp_port | CDP port for the browser | | display_name | Agent's chosen display name in muse.ai (may differ from `agent`) | | notes | Freeform context | ## Accounts | agent | node | profile | login_type | meta_label | email | phone_otp | instagram_linked | status | egress_ip | cdp_port | display_name | notes | |-------|------|---------|------------|------------|-------|-----------|------------------|--------|-----------|----------|--------------|-------| | muse | muse | muse | email_otp | ltd.pixels.ltd@gmail.com | ltd.pixels.ltd@gmail.com | no | unknown | active | 104.28.195.181 | 9410 | muse | Main dev agent. Logged in 2026-10-03 via email OTP on bl. | | pip | pip | pip | phone_otp | piparada | io.antonio.parada@gmail.com | yes | yes | active | 104.28.195.181 | 9420 | pip | Phone OTP login. Linked with IG piparada, email io.antonio.parada@gmail.com. Verified active 2026-10-04. | | 646 | 646 | 646 | phone_otp | Meta Account | - | yes | no | active | 104.28.195.181 | 9430 | 646 | Shares phone number with piparada's account. Logged in 2026-10-03 via phone OTP (first Meta Account option). Node created 2026-10-03 (warp-646, CDP 9430). Browser up, session active. | | def | def | def | email_otp | defnotabotnet@gmail.com | defnotabotnet@gmail.com | no | yes | active | 104.28.195.181 | 9450 | def | Full onboarding completed 2026-10-04; age verification cleared via Instagram linking (paradahub). Active chat session. | | opm | opm | opm | email_otp | Nico Parada | artglobal.cc@gmail.com | no | yes | active | 104.28.195.181 | 9440 | opm | Email changed from yourfriendnico@proton.me to artglobal.cc@gmail.com. Linked with IG auxfate. Browser up, session active. | | dev | dev | dev | email_otp | paradaproduced@gmail.com | paradaproduced@gmail.com | no | yes | active | 104.28.195.181 | 9460 | dev | Full onboarding completed 2026-10-04; unlocked /access gate via Meta Accounts Center IG linking (veryraremeta). Active chat session. | ## Login Type Details ### email_otp - Flow: Enter email → Receive OTP via email → Enter OTP → Select account (if multiple) - Used by: muse - Credentials: Email address (stored). OTP is transient. ### phone_otp - Flow: Enter phone → Receive SMS OTP → Enter OTP → Select Meta account (if multiple) - Used by: pip, 646 - Credentials: Phone number is NEVER stored (PII). Only `phone_otp=yes` flag. - Note: One phone number can map to multiple Meta accounts (observed: 2 accounts). ### Meta Account Selection When a phone number maps to multiple Meta accounts, muse.ai shows a selector: - Screenshot: `docs/meta-account-selection.png` - Each option is a SEPARATE Muse container (not linked profiles). - The `meta_label` column records which option was selected. - Instagram-linked accounts show IG avatar in selector. ## Naming Convention **Rule:** The `agent` column value is used identically for: - NetVM node name (`/etc/netvm/.conf`) - Chrome-box profile (`~/.local/share/chrome-box/profiles//`) - API account (`muse-chat-api.py --account `) - CDP port mapping (deterministic per agent) **Exception:** `display_name` may differ (user-chosen in muse.ai UI). Example: agent `pip` has display_name `pip` (renamed from 'Muse'). Do NOT use different names for node vs profile vs API. That causes bugs.