Concepts
Profiles
A profile is one isolated browser — its data, proxy and settings — kept consistent with the machine it runs on.
A profile is a browser identity you can open again and again: its own cookies and storage, its own proxy, and settings such as language, time zone and screen. Browlix validates the whole configuration before saving it, with the same rules for the web app, CSV import and the API.
Creating and editing
profiles.createtakes the fields you want to set over the workspace defaults:name,config(for example{ "os": "windows" }),proxy_id,group_id,tag_ids,notes.profiles.updatetakes apatchand theexpected_revisionyou last read. If someone changed the profile since, you getCONFLICTinstead of overwriting their change. An edit that changes nothing keeps the revision.profiles.trashandprofiles.restoretake up to 1,000 ids and report a result per profile.
Consistency with the machine
A profile is meant to look like an ordinary browser on the kind of machine that runs it. Set config.os to the operating system of the machines you will use. When a session starts, the worker reports back what the browser actually applied; anything it could not enforce is shown as unsupported or failed, never as applied (sessions.get → effective identity and mismatches).
Proxies
Each profile can be bound to one proxy. Credentials are stored in a vault and never returned by any interface. Before a launch the worker checks the proxy, and a profile set to use a proxy is never silently opened without it.
Data sync between machines
Profile data (cookies, storage and the other synced categories) is sealed and stored by Browlix after a session closes, so the profile can open on another machine later. While a machine still holds newer data that has not been uploaded, opening the profile elsewhere answers SYNC_PENDING instead of starting from an older copy.
Browser preferences
Preference templates hold settings shared by many profiles. Templates have numbered revisions; publishing a new revision never changes profiles pinned to an older one. Moving them is an explicit preference_templates.upgrade_profiles call.
