Business Performance Consulting Sdn Bhd User Guides
06

Bootstrap a New Machine (Appendix)

Odoo 19 Enterprise · BPC Session

Steps to bring up the session workflow on a fresh Mac. Run once per machine.

Process lifecycle

Clone Install wrapper Setup password Test
1

Prerequisites

Before starting: Python 3 already installed (every modern Mac has /usr/bin/python3), git installed (comes with Xcode Command Line Tools — run xcode-select --install if missing), and an SSH key on this Mac added to my GitHub account (so git clone and push work without a password).

2

Clone the repo

Create the Projects directory if needed, then clone bpc-war-plan via SSH. Command: mkdir -p ~/Projects && cd ~/Projects && git clone git@github.com:BPConsulting/bpc-war-plan.git. After this I should see scripts/, exports/, and session in ~/Projects/bpc-war-plan/.

3

Install the session wrapper

The session wrapper lives in the repo. Symlink it into PATH so I can type "session" from any directory. Commands: cd ~/Projects/bpc-war-plan && sudo ln -sf $(pwd)/session /usr/local/bin/session && sudo chmod +x /usr/local/bin/session. Verify: which session (should print /usr/local/bin/session) and session help (should print the banner). The symlink means any future git pull that updates the wrapper auto-applies without re-copying.

Symlink over copy Early I was copying the file. That works but leaves a stale copy if the wrapper gets updated in git. Symlinking is cleaner — the wrapper in PATH always matches the repo.
4

Setup the Keychain password

Run session setup. The config (URL, DB, username) is already in the repo from the other machine. When asked "Edit?" press N. Enter the Odoo password at the hidden prompt. macOS will pop a Keychain access dialog — click Always Allow. Expected final line: "OK — authenticated, uid=2".

5

Verify with session open

Run session open. Expected: git pull reports up to date (or shows recent commits from the other machine), the Last CLOSE line shows the last close from the other machine, and "N open To-do tasks -> exports/latest.json" where N matches what I see in Odoo. If N matches, the machine is fully set up. No need to run session seed — that only runs once per entire setup.

Never run seed from here session seed is a destructive operation that already ran during initial setup. Running it again on a new machine would wipe and rebuild what is already there. The new machine only needs to read, not seed.