PrjLab keeps a project and its context together: source files, project instructions, project memory and the sessions you choose to keep. You push from the terminal, browse and share in the browser, and clone the whole picture onto any machine.
1. Create an account
Open Sign in. The same button creates a new account: enter your email address, choose a password, confirm the code we send you, then pick your handle (for example anna). Your handle is how friends find you and how repositories are named: anna/fieldnotes.
Then create your first repository with New repository. Repositories are private: only you and the people you invite can see them.
2. Install the CLI
The CLI is called prj. It needs Node.js 22 or newer. On Linux it stores your sign-in in the system keyring (Secret Service / libsecret), on macOS in Keychain and on Windows in DPAPI; it never writes tokens to a plain file.
Check it works and sign in. prj login opens your browser; nothing is typed into the terminal.
prj --version
prj login
prj whoami
The CLI is open source (MIT): github.com/AbdellahJAIZE/prjlab-cli. Publication on the npm registry is planned; until then the release tarball above is the supported install.
3. Push your first project
Inside your project folder, initialise once, then push to the repository you created. Use your-handle/repository-nameexactly as shown on the repository page.
cd ~/projects/fieldnotes
prj init
prj status # what would be captured
prj push anna/fieldnotes
push captures regular files, honours your .gitignore and .prjignore, and always skips secrets such as .env, key files and credential folders. Every push creates an immutable version you can open in the browser. After the first push the remote is remembered, so a plain prj push is enough.
4. Clone it anywhere
On another machine, install the CLI, sign in with the same account and clone. Later, prj pull brings that copy up to date and never overwrites edits you made locally: conflicting files are reported instead of replaced.
prj clone anna/fieldnotes # creates ./fieldnotes
cd fieldnotes
prj pull
5. Share with a friend
Open the repository, choose Access and invite a handle as a reader (view and clone) or writer (also push). The invitation appears on their Repositories page; once accepted they can prj clone anna/fieldnotes too. Only the owner manages access, and removing someone takes effect immediately.
What travels with a project
Put the context you want to keep beside the code, and it is captured with explicit content types:
.prjcontext/instructions/ project instructions (CLAUDE.md and AGENTS.md are recognised too)
.prjcontext/memory/ decisions, notes, project memory
.prjcontext/sessions/ the conversations you chose to keep
Global assistant folders, other projects and machine credentials are never scanned. Review prj status before you push; the filename rules are a safety net, not a complete secret scanner.
Command reference
prj login sign in through the browser
prj whoami show the signed-in handle
prj logout remove this machine's credentials
prj init prepare the current folder
prj status files that changed since the last capture
prj snapshot capture a local version (offline)
prj export <id> <new-dir> write a local version to a new folder
prj restore <id> restore a local version in place
prj recover finish an interrupted operation
prj push [handle/repo] upload the current folder as a new version
prj pull [handle/repo] bring this folder up to date
prj clone <handle/repo> [dir] copy a repository into a new folder
Repository UUIDs (shown in the page address) are accepted wherever handle/repo is.
Limits and safety
Early-access limits per repository: 1,000 files, 5 MiB per file and 100 MiB per version. Symlinks, hard links and unsafe paths are rejected. Files are encrypted at rest on our servers and only served to current members; PrjLab can read private content to render previews and sharing, so this is not end-to-end encryption.
A lost network reply is safe: run the same command again and the CLI completes the original push or pull instead of creating a duplicate. Questions or problems: open an issue on the CLI repository.