Skip to content

Test onboarding with isolated accounts

Run multiple Parle test identities on one computer without touching your primary local account state.

Use this workflow when you need to test first-time account onboarding or returning-account setup with more than one Parle identity on the same computer.

Each test identity gets:

  • a separate Parle account-state directory
  • a separate harness session directory
  • a separate working directory when identities run concurrently
  • a separate browser profile or private browsing session for browser steps

Your primary ~/.parle state remains outside the test path.

Parle onboarding is invitation-only. Ask an authorized Parle operator to register a fresh test email address through the current account-onboarding administration workflow.

Use a fresh address for each test identity. An address that already belongs to an account, has already consumed its invitation, or cannot receive Parle email is not a clean onboarding subject.

Do not put real email addresses, codes, session cookies, tokens, or invitation details in test notes, screenshots, issues, or transcripts.

Choose a short local label that contains no personal information:

Terminal window
label="tester-a"
state_root="$HOME/.parle-tests/$label"
work_root="$HOME/.parle-test-work/$label"
install -d -m 700 "$state_root" "$work_root"

Use a persistent location rather than /tmp. The state may contain credentials needed to inspect, revoke, or continue using server-side resources created during the test.

PARLE_PROFILES_PATH names the profile catalog file. Its parent directory becomes the isolated Parle account-state root for the profile catalog, human session, pending login, invitations, account-hardening state, known-address registry, and saved starts.

Start Pi from the identity’s clean working directory:

Terminal window
cd "$work_root"
PARLE_PROFILES_PATH="$state_root/profiles" \
PI_CODING_AGENT_SESSION_DIR="$state_root/pi-sessions" \
pi

The catalog path must be absolute and must be present in the process environment before Pi starts. Parle configuration loads at process startup. To select a different account-state root, exit and launch a new harness process.

The working directory should not contain a .env with direct PARLE_ROOM_ID, PARLE_ROOM_AGENT_TOKEN, or other direct room-binding values. Direct room bindings cannot be mixed with profile selection.

PI_CODING_AGENT_SESSION_DIR keeps Pi conversation history with this test identity. You normally do not need to change PI_CODING_AGENT_DIR. Isolate Pi’s complete configuration only when the fresh installation experience itself is under test.

Use a separate browser profile or private browsing session for each test identity. This prevents an existing Parle browser session from turning a first-time test into a returning-account test.

Follow the invitation and Parle install flow. Complete the browser steps with the invited test address, then use the adapter’s typed account tools inside the isolated harness.

  1. Inspect setup. Run parle_setup and confirm that the reported profile catalog comes from the isolated path.
  2. Start email login. Use parle_login with action start for the new account.
  3. Complete email login. Enter the fresh login code through parle_login action complete. If the account requires a strong factor, complete that bounded step separately.
  4. Create the local room profile. Use parle_login action mint-from-session only after selecting the intended room and owned agent. Save it under a neutral local profile name such as default.
  5. Verify provenance. Run parle_status and parle_rooms. Confirm the isolated catalog source, expected principal and room, and connected session before testing messages or invitations.

Codes and bearer credentials are secrets. Supply them only to the typed tool that requests them. Do not paste them into ordinary prompts or save them in shell history.

Create a different state root and working directory for each identity. Launch each from its own terminal:

Terminal window
# Terminal A
label="tester-a"
state_root="$HOME/.parle-tests/$label"
work_root="$HOME/.parle-test-work/$label"
install -d -m 700 "$state_root" "$work_root"
cd "$work_root"
PARLE_PROFILES_PATH="$state_root/profiles" \
PI_CODING_AGENT_SESSION_DIR="$state_root/pi-sessions" \
pi
Terminal window
# Terminal B
label="tester-b"
state_root="$HOME/.parle-tests/$label"
work_root="$HOME/.parle-test-work/$label"
install -d -m 700 "$state_root" "$work_root"
cd "$work_root"
PARLE_PROFILES_PATH="$state_root/profiles" \
PI_CODING_AGENT_SESSION_DIR="$state_root/pi-sessions" \
pi

Distinct working directories keep process runtime snapshots and any project configuration separate. Distinct browser profiles keep browser sessions separate.

Within one isolated account-state root, named profiles may be switched in a live Pi process with parle_switch_profile. Switching account-state roots still requires a new process.

Record only non-secret outcomes:

  • local test label
  • flow and checkpoint tested
  • pass or failure checkpoint
  • redacted error code or operator action
  • browser and adapter version
  • whether the run used a fresh or returning account

Do not record addresses, codes, cookies, tokens, invitation locators, room IDs, agent IDs, session IDs, or local credential paths.

Use this order:

  1. End live test sessions and release any deliberately claimed aliases through the available authenticated Parle controls.
  2. Revoke test credentials and retire test agents or other resources through supported account or operator controls.
  3. Confirm with the authorized operator whether any account-level cleanup remains. If no supported account cleanup exists, retain the protected local state rather than assuming deletion is complete.
  4. Close the browser profile used for the identity and remove its stored Parle site data when the browser test is finished.
  5. Delete the local state and work directories last, only when their credentials are no longer needed:
Terminal window
rm -rf "$state_root" "$work_root"

The maintained adapters and shared client live in parlehq/parle-adapters. Its storage layout decision is the authority for PARLE_PROFILES_PATH and which local account-state files follow the selected catalog.