Releases: RamitVishwakarma/Janus
Release list
Janus v1.2.0
Added
- A Codex tab, for switching between OpenAI Codex accounts the way the Claude
tab switches Claude Code ones. The window's tabs are now Claude, Codex and
Storage. Codex keeps its whole sign-in in~/.codex/auth.json, so a switch
saves that file under the account it belongs to and writes the other
account's in its place; saved sign-ins live in the login keychain under
Janus Codex. The displaced sign-in is saved again on every switch, because
Codex rotates its single-use refresh tokens and an older copy stops working.
The same email in two ChatGPT workspaces is kept as two accounts, and API-key
sign-ins are supported. Refresh fetches each ChatGPT account's five-hour and
weekly limits from OpenAI, and a switch made while Codex is running says so,
since a running Codex can write its old account back. To add a second
account, delete~/.codex/auth.jsonand runcodex login.codex logout
revokes the sign-in at OpenAI, which kills the copy Janus just saved. - The menu bar lists the Codex account alongside the Claude Code one, with a
one-click switch to the next. ~/.codexis guarded from cache clearing, as~/.claudealready was.
Installing
With Homebrew:
brew install --cask --no-quarantine ramitvishwakarma/tap/janusOr download the .dmg, open it, and drag Janus to Applications.
The build is ad-hoc signed rather than notarised, so clear the quarantine flag once:
xattr -dr com.apple.quarantine /Applications/Janus.app
open /Applications/Janus.appUniversal build for Apple silicon and Intel, macOS 13 or later.
Checksums
8c1df5b1c2056ce204e48d1553b21aa0f2db1c5f04b4eeff4b03542658992d1a Janus-1.2.0.dmg
66dd83e671d40a881da644eadcf85e1705732c8c4a91447e4e7972d6ded40adb Janus-1.2.0.zip
Janus v1.1.0
Added
- Refresh now asks Anthropic for each account's figures rather than only
re-reading what Claude Code left on disk. A saved account's numbers used to be
frozen at the moment it was last signed out, because that file is the only
place they were written and nothing writes to it while the account is parked.
One request per account, made with the tokens that account already has saved,
and the line under each pair of bars says whether you are looking at a fetched
figure or a remembered one. A fetched figure is kept, so it survives the app
being quit and gives the account a current cache the next time it signs in.
Expired tokens are renewed first, and what comes back is stored before it is
used for anything else. The signed-in account is never renewed by Janus: a
running Claude Code session is holding that token, and Claude Code keeps it
fresh itself. - The window keeps its own time. Countdowns run down and a limit that passes its
reset empties itself while the window sits open, instead of waiting for
something to force a redraw — a row drawn at nine used to still be claiming
"resets in 2h 22m" at midnight. A window actually turning over also triggers a
fetch, since that is the moment the old figure stops describing anything.
Installing
With Homebrew:
brew install --cask --no-quarantine ramitvishwakarma/tap/janusOr download the .dmg, open it, and drag Janus to Applications.
The build is ad-hoc signed rather than notarised, so clear the quarantine flag once:
xattr -dr com.apple.quarantine /Applications/Janus.app
open /Applications/Janus.appUniversal build for Apple silicon and Intel, macOS 13 or later.
Checksums
eebd920e76aa053c43a2c76c3191e8cf4263e966f577cd51b1b548557f28b959 Janus-1.1.0.dmg
21f7a92d7aa052cd7bc88daddfc15e8a823d12f505a3daf13ba5cc6153db45de Janus-1.1.0.zip
Janus v1.0.1
Fixed
- Repeated requests for the login keychain password, from Janus and from Claude
Code alike. Keychain entries carry a partition list naming the code allowed to
open them, and writing them through the Security framework quietly re-stamped
that list with Janus's own signature, shutting Claude Code out of its own
tokens and shutting Janus out again after every rebuild. Entries now go through
/usr/bin/security, which is what Claude Code uses and what leaves them in a
partition both can reopen. Saved accounts are mended the next time they are
switched to. - A switch no longer overwrites the live session when the keychain refuses to
hand over its tokens. The refusal used to be indistinguishable from nobody
being signed in, so the switch carried on and the displaced account was left
needing a fresh sign-in. - Refresh now folds the signed-in account's figures into its saved copy, so they
are not lost when it is switched away from, and says what it could and could
not bring up to date. Only the signed-in account's figures can move, which the
button now explains rather than leaving people to press it again. - A limit whose reset has passed no longer reads "resetting now" forever, and no
longer shows the spend of the window that ended as though it were the current
one. It is drawn empty with a dash and says "last reset 4h ago"; the weekly
figure is left alone until its own reset comes round. Claude Code measures only
while a session is running, so the signed-in account is now told to start one,
and the help popover explains where the figures come from at all. - The window comes forward before any operation that can raise a keychain prompt,
so a prompt drawn behind another app no longer looks like a hung switch, and
the busy state is cleared on every path out.
Added
- Regression tests pinning down that reordering the rotation never alters, drops
or duplicates a saved account. Accounts are keyed by UUID rather than by
position, so their place in the list is not part of how they are stored.
Installing
Download the .dmg, open it, and drag Janus to Applications.
The build is ad-hoc signed rather than notarised, so clear the quarantine flag once:
xattr -dr com.apple.quarantine /Applications/Janus.app
open /Applications/Janus.appUniversal build for Apple silicon and Intel, macOS 13 or later.
Checksums
4b1d6b237aa3546e2472181e64e0cc0c227920ded05b0df5d97ecea59b983438 Janus-1.0.1.dmg
c4b2d5a297a416e29679d19eae00f0f4d3248ea0c35bfa6a9ef8e8173e2e41ba Janus-1.0.1.zip
Janus v1.0.0
First public release.
Added
- Switch between saved Claude Code accounts from a window or the menu bar, with
the live session swapped in place and the displaced one saved automatically. - Save the signed-in account with one press; an account signed in outside the app
is adopted rather than overwritten when switching away from it. - Per-account five-hour and weekly limit usage, read from the settings file
Claude Code writes, with saved accounts labelled by when their figures were
taken. - A reorderable rotation, so
⌘Sfrom the menu bar moves through accounts in the
order you choose. - A storage tab that measures a catalogue of developer and application caches and
moves the selected ones to the Trash, refusing anything outside the home
directory and anything held open by a running app. - Universal builds published as a
.dmgand a.zipwith SHA-256 checksums.
Installing
Download the .dmg, open it, and drag Janus to Applications.
The build is ad-hoc signed rather than notarised, so clear the quarantine flag once:
xattr -dr com.apple.quarantine /Applications/Janus.app
open /Applications/Janus.appUniversal build for Apple silicon and Intel, macOS 13 or later.
Checksums
865ec5dc2384d8ddf4dac6cd1259dcbb83694d29b465bceec53afc8808a2c399 Janus-1.0.0.dmg
897dc1a90a3890337e5eff26f9f6df6f4f0472b379bc488eb3086c43a25e2a22 Janus-1.0.0.zip