Solutions
Freelance
- 3
- portals the scenario names: Upwork, Fiverr, Freelancer
- 6
- daily ceilings it carries, ramped over the first week
- AES-256-GCM
- the session file that travels through your folder
- 1
- machine may hold one profile open at a time
Every client account is a separate machine, not a separate tab
Freelance work spreads across accounts. Your own Upwork profile, a second account you run for an agency, a Fiverr seller account, a Freelancer account opened for a client in another country. Each one carries its own history, and every platform behind them reads two accounts opened in one browser as one person.
The usual answers separate less than they look. Incognito mode forgets cookies when the window closes, and while it is open it reports the same screen, the same graphics string, the same fonts and the same clock as the window beside it. A VPN changes the address you come out of and nothing about the device. A second profile in an ordinary browser divides cookies and shares everything the machine says about itself.
In ARMANOS a profile is a browser of its own. Cookies and site storage live in a directory that belongs to that profile alone, the proxy is a property of the profile, and the device readings are derived from the profile id, so the same profile answers the same way at every launch. The readings come from generation 4 of the generator and one of five templates, and our engine, ARMANOS Browser 153.0.7978.0, gives them itself, before any script on the page runs.
This matters most where your accounts already differ. An account you opened from Berlin should keep a Berlin clock and a Berlin address for as long as it lives. A profile holds that combination together, launch after launch, and none of it leaks into the profile you use for your own work.
Cookies and site storage
Each profile writes into a directory of its own, and nothing reads across the boundary.
The exit address
A proxy belongs to the profile. If a proxy is set and cannot be applied, the profile refuses to open instead of going out from your home connection.
Clock and language
Both follow the exit country: 114 countries carry a matching timezone and a matching language list.
Device readings
Screen, cores, memory, graphics strings and the font set come from one template and one seed, the profile id.
Extensions
Each profile has its own enabled set, chosen from a catalog of 11 inside the app.
Sign-in details and one-time codes
The account password is sealed by the system keychain, and the code generator follows RFC 6238, so the second factor lives with its profile.

The Freelance scenario fills the profile in the moment you create it
The scenario is one choice in the profile creation window, and Freelance is one of the five offered. It is not a label. It decides what runs inside that profile from the first launch, and it can be seen in the code as a single record with a start page, a script set, a tracker list and six ceilings.
It sets the start page to Upwork, and a profile that carries an address of its own keeps that one. It turns on two injected pieces: the fingerprint one, which keeps the readings consistent inside the page, and a small one that suppresses the beacon call sites use to fire trackers as you leave a page.
It attaches the general tracker list, 31 hosts refused at the network layer rather than hidden inside the page, and it turns on link cleaning. On every top-level navigation, 40 tracking parameters are stripped out of the address, the click identifiers of the large ad networks among them.
And it carries six daily ceilings: the numbers this scenario treats as a safe day for a freelance account. They sit on the profile card, beside today's page count, and they shrink for a profile created this week.
| Action | A safe day | Day 1 of a new profile |
|---|---|---|
| Proposals | 10 | 2 |
| Messages | 25 | 5 |
| New gigs | 3 | 1 |
| Profile edits | 5 | 1 |
| Payout edits | 1 | 1 |
| Account switches | 1 | 1 |
These numbers are ours, not the platform's
A new profile spends its first week going slower
A profile created today is not treated like one that has been working for three months. The freelance scenario carries a daily ceiling of 40 actions, and a new profile reaches the full number on day seven.
The ramp is 20, 35, 50, 65, 80 and 90 percent of the ceiling over the first six days, and the whole ceiling from day seven onward. The same curve moves the six per-action ceilings, with one floor rule: an action the scenario allows never ramps down to zero, so day one still shows at least one.
What the app counts is narrow, and saying so is the only honest label for the bar. An action is a top-level page opened in that profile's windows. The count resets with the calendar day, the bar turns amber at 80 percent of the day's ceiling and red at the ceiling, and it stops nothing. The age it shows is the age of the ARMANOS profile, not of the account behind it, because the app cannot know when you opened that account.
- Day 1
- 8 actions
- Day 2
- 14
- Day 3
- 20
- Day 4
- 26
- Day 5
- 32
- Day 6
- 36
- Day 7 and after
- 40
The ramped ceiling for a freelance profile, counted per profile, per day.

Three portals by name, and a region behind each account
The scenario names three portals: Upwork, Fiverr and Freelancer. Across the five scenarios in the app, twenty platforms are named this way, and the naming is the modest part of it.
Naming is not automating. Nothing about Upwork is built into the profile beyond the start page and the wording of the ceilings. What you get is an ordinary browser window with an identity of its own and a session that belongs to it. If you want steps repeated, that is the automation builder, and it works the same way on any site.
The region is the second half of the job. A profile carries its own proxy, and the exit country is resolved over TLS from four providers rather than one, because a single free endpoint starts refusing during a bulk launch. The answer decides the profile's clock and its language list, so an account on a German address does not sit in your own timezone while claiming to be in Berlin.
If a profile has a proxy set and it cannot be applied, the launch is refused outright. Opening it directly would show that account your home address, which is the one thing a separated profile must never do.
- Proxy exit
- Germany
- Time zone
- Europe/Berlin
- Languages
- de-DE, de, en
- Template
- windows-chrome
- Generation
- 4
One of the 114 country entries that pair an exit country with a timezone and a language stack.
Upwork
The scenario's start page. A profile that carries its own address opens there instead.
Fiverr
Named by the scenario. The profile is a normal browser window on it, with its own cookies and its own device.
Freelancer
Named by the scenario. Nothing about the portal is automated for you by choosing it.
A region per account
The exit country sets the timezone and the language list, and the country is remembered on the profile until the address changes.
When both computers changed the same session, nothing is overwritten
Two machines can both change one session. The app decides by comparing two things it owns: the session's own timestamp against the timestamp it remembered at the last exchange, and the folder's label against the label it last saw there. The clocks of two machines are never compared against each other, because they disagree.
When both sides changed, nothing is touched. A notice names the other machine, the profile still opens with the session it has here, and the choice waits for you in "Session in the folder" in the profile menu. Sending yours keeps a dated copy of what it replaced, and three of those are kept per profile, so a click made without thinking is not a lost day.
Nothing is ever merged. Two halves of one login blended together is not a session, it is a broken one. You keep one side, and the other stays in the folder as a copy the exchange ignores.
The cloud makes its own mess, and the app names it rather than guessing. A label whose file has not arrived yet, or a file the cloud moved off the disk to save space, means nothing is done this round instead of a stale session being taken. Copies the cloud itself creates when both machines wrote at once, the ones ending in a number, in "conflicted copy" or in an appended machine name, are reported to you once each.
| What changed since the last exchange | What the app does |
|---|---|
| Nothing | Nothing. The profile is in sync. |
| Only on this machine | The session is packed and written to the folder. |
| Only in the folder | The session is taken before the profile opens. |
| Both sides | Nothing is overwritten, and you choose which side to keep. |
| The folder is empty for this profile | The first send fills it. |
| The label is newer than its file | Nothing this round. It is taken once the cloud finishes copying. |
Changing the password resends everything
One profile stays in one pair of hands
A profile open in two places at once is the thing you bought this to avoid. Two live sessions of one account from two addresses is exactly the pattern that gets accounts blocked, so the app refuses to produce it.
While you are signed in, the server holds the lock, because the two machines cannot see each other. Opening a profile claims it, the app renews it every minute, and closing the last window releases it at once. A machine that loses power does not hold a profile forever: the lock lapses on its own after three minutes.
The second machine gets a refusal that names the holder and the moment it started, not a silent failure. You can take the profile over deliberately, after a warning that says plainly what two sessions mean. The previous holder's windows are then closed on that machine, with a notice explaining why, which is better than two windows quietly working against one account.
Without an account there is no lock and there cannot be one: nothing connects the two machines. The folder exchange still works in that case, and this is the honest boundary of the feature rather than a detail we leave out.
- 1
The lock is claimed
Before any window exists. Claiming it after the window opened would mean the second session already happened and we only learned about it afterwards.
- 2
Quota and access are checked
A profile beyond the plan you pay for, or one whose access was revoked, is refused in the server's own words rather than opened anyway.
- 3
The fresh session is taken from the folder
Only now, with the other machine known to be out, and only into a browser that has not started yet.
- 4
A new exit address, if the profile asks for one
If the rotation fails, the launch stops and the lock is released, because opening on the old address is what that profile was set to avoid.
- 5
The window opens and the lock is renewed each minute
If it is taken over elsewhere, the windows here close and you are told why. On close, the lock is released and the session goes back to the folder.
Why we are strict about this one
What this does not do
- The folder is yours, not ours. If your cloud app is not running or the disk is not mounted, nothing travels, and we cannot recover a session we never hold.
- Sessions move only when a profile is closed. A machine left with windows open all day sends nothing until they close.
- Nothing is merged. When both sides changed, you keep one side and the other stays as a dated copy beside it.
- The lock needs an account and a reachable server. Signed out, or with the server unreachable, the launch is allowed rather than blocked, and two machines can then open one profile. Signing in on two computers also takes two device seats: the free plan has one, Professional two, Business five.
- The ceilings are advice. The app counts pages opened in a profile, not proposals or messages, and no portal publishes the numbers it actually enforces.
- Isolation is not a clean record. Platforms also weigh account age, payment details, client history and what you write. A separate profile does not make a new account trusted.
How to check
Every line above is held by code in this repository and by a stand that runs it.
- The Freelance scenario really carries these numbers and this ramp
- packages/shared/src/index.js (SCENARIOS.freelance, WARMUP_RAMP) · apps/desktop/src/main/main.js (paceInfoFor, actionLimitsFor)
- A closed profile's session travels encrypted, and an open one is never touched
- apps/desktop/src/lib/sessionSync.js · apps/desktop/test/session-sync-folder.js
- When both sides changed, nothing is overwritten and the replaced copy is kept
- apps/desktop/src/main/main.js (keepReplacedCopy) · apps/desktop/test/conflict-keeps-copy.js
- A file the cloud moved off the disk is not read as "no session"
- apps/desktop/src/lib/sessionSync.js (readRemoteMeta) · apps/desktop/test/cloud-evicted-file.js
- The copies the cloud itself makes are noticed and named once each
- apps/desktop/src/lib/sessionSync.js (cloudConflictCopies) · apps/desktop/test/cloud-conflict-copies.js
- One profile opens in one place, and a takeover closes the other windows
- apps/server/src/profiles/profiles.service.ts (LOCK_TTL_MS) · apps/server/test/profile-lock.js · apps/desktop/test/profile-busy.js
Read next
Proxies per profile
Where the exit address, its country and its rotation are set.
How a profile launches
The order of steps from the click to the window.
The register of promises
Every claim on this site with the file and the stand behind it.
Plans and seats
Profiles, device seats and what a colleague costs.
Two profiles, free, with no card
Install ARMANOS, make an Upwork profile and a Fiverr profile, and read what the start page reports about each of them.