quarters

agent
Guvenlik Denetimi
Uyari
Health Uyari
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 9 GitHub stars
Code Uyari
  • network request — Outbound network request in frontend/dist/remote.js
  • network request — Outbound network request in frontend/dist/sw.js
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

A home for terminal coding agents on macOS: run Claude Code, Codex, Gemini CLI, Aider and more across many projects at once, and pick up from your phone.

README.md

The Quarters mascot, a little robot with a monitor for a head, waving

Quarters

Latest release MIT licence CI macOS 11 or later Install with Homebrew

A minimalist home for terminal coding agents, for developers who work on many projects at once.
Claude Code, Codex, Gemini CLI, Antigravity, OpenCode, Copilot CLI, Devin or Aider: switch projects in a click,
run your agents in several of them side by side, see what they're doing,
start your dev servers with one action — and do it all from your phone, too.

Quarters at work: Claude runs in three projects; api-gateway finishes and is marked as waiting, ⌘J jumps to it, a reply goes in, and the project's backend and frontend start side by side

brew install --cask amithgc/tap/quarters

Free and open source · quarters.amithgc.com · If Quarters saves you some tab-hunting, a ⭐ helps other developers find it.

Install · Features · Coding agents · Remote access · Configuration · FAQ · Contributing

Quarters: projects on the left, a coding agent in the middle, stats on the right

Why Quarters

If you use a terminal coding agent — Claude Code,
Codex, Gemini CLI, Antigravity, OpenCode — on more than one project, you know
the routine: a terminal window per project, cd into each one, start the
agent, start the backend, start the frontend, then remember which window was
waiting for you.

Quarters is a simple, focused home for your coding agents that takes that
routine away.
Pick the agent you like (Claude Code is the default, and each
project can use a different one). Its goals are deliberately narrow:

  1. Switch between projects instantly. Every project is one click (or
    ⌘P) away; its agent sessions keep running in the background while you're
    elsewhere.
  2. Work on several projects at the same time. Agents run in as many
    projects as you like, and Quarters tells you which one finished and is
    waiting for you.
  3. See what's going on at a glance. A side panel shows git changes, the
    project's automations and servers, and what the agent tells Quarters: for
    Claude Code the session's model, context and tokens, your plan's usage,
    what it edited, and the project's MCP servers and skills; for Antigravity
    its plan and model quotas.
  4. Start the rest of your stack in one go. Automations open the
    terminals a project needs — backend, frontend, a script, a watcher — each
    in its own folder, side by side, when you open the project, on a
    schedule or with one click.
  5. Do the daily chores where you work. Commit, push and open pull
    requests (with CI status), run a project's scripts, stop the dev server
    holding a port, undo an agent turn that went wrong, search every project
    at once, and copy a summary of your day.
  6. Work from anywhere. Leave Quarters running on your big machine at
    home and use it from a laptop, tablet or phone through the browser: the
    same projects, the same live sessions, secured with passkeys.

It is built for developers and their coding agents, and nothing else: no
general-purpose terminal features, no AI of its own, no accounts or cloud
services. Your projects, your logins and your machine stay yours.

Quarters is an independent open-source project. It is not made by,
affiliated with or endorsed by Anthropic, OpenAI, Google, GitHub or the
makers of the other agents it runs. Claude and Claude Code are trademarks
of Anthropic; the other names are trademarks of their owners.

Features

Home: every project at a glance

The home page: the mascot, a tagline, tiles for jumping to a project, adding one, searching conversations and Settings, and today's activity across every project as an animated chart

The house at the left of the title bar (or Home in ⇧⌘P) shows the home
page, with your tabs still running behind it:

  • Jump to a project, add one, search conversations, Settings: one tile
    each, with its shortcut. A different tagline greets you every time.
  • Today, across every project: sessions, tokens written and read, and
    the cache hit rate, with the last two hours as an animated chart (bars
    rise in, the current five minutes glow; hover one for its time and
    tokens).
  • Today's work: per project, your commits since midnight, the agent
    conversations you had and how many prompts, and what isn't committed yet.
    Copy puts it on the clipboard as Markdown, for a standup or a
    timesheet (also ⇧⌘P → Copy today's summary).
  • Active now: every running session, the ones waiting for you first.
Today across every project: totals and a bar chart of the last two hours, then today's work per project: commits, prompts and uncommitted files, with a Copy button

Projects, tabs and sessions

Two prompts queued in the side panel while Claude works; the next goes in when it finishes
  • One click opens a project; press C to start its coding agent,
    ⇧C to continue the last conversation, S for a shell.
  • Several tabs per project (agents and shells), all running in the
    background while you switch.
  • Images in the terminal: a path to an image an agent made (or any
    PNG, JPEG, GIF or WebP a tab prints) is a link: hover to preview it,
    click to see it full screen.
  • "Your turn" alerts: when an agent finishes in a tab you aren't looking
    at, you get a notification and a Dock badge, and the tab is marked.
  • Who's waiting for you: the ACTIVE list (with 5 projects or more)
    puts the sessions that finished (or are asking you something) first,
    longest waiting first, with how long; ⌘J (or a click on "◐ waiting" in the title bar) goes to the
    next one.
  • Prompt queue: line up prompts for a session ("add tests", then "fix
    lint"…); each goes in when the agent finishes the one before, never over
    a question it is asking or a message you started typing. On a phone, ⏭
    in the message card queues what you typed while the agent works.
  • Groups, project icons, drag to reorder, ⌘P / ⇧⇧ to jump anywhere,
    git status (●changes ↑ahead ↓behind) in the list, and + add in the
    list's header.
  • Project icons: an image (favicons and app icons in the folder are
    suggested), or any emoji from Emoji…, every emoji there is, by group
    and with a search by name.
  • A colour per project on its tabs and the terminal's frame, so you
    can tell projects apart at a glance (from its name, or one you pick).
  • Every command by name: ⇧⌘P (or > in the jump list).
  • Focus mode: ⇧⌘↵ leaves only the terminal; again brings the
    panels back.
  • Tips: one quiet line at the bottom right about a key or a panel, the
    ones you haven't used first. The next one fades in every two minutes;
    › shows it now.
  • Saved prompts (⚡): type a common instruction with one click.
  • The project's automations in the side panel: run, restart or stop
    each one, edit it, delete it, or add a new one, right where you work.
  • Any of twelve coding agents, chosen for all projects or per project
    (see Coding agents).

Split panes and a files panel

One tab split three ways: the backend, the frontend and a shell, side by side and stacked
  • Split panes, as in iTerm: ⌘D opens a shell beside the one you're
    in, ⇧⌘D one below it, and splits nest. ⌘[ and ⌘] move between
    panes, ⌘W closes just the pane, and a pane whose shell exits cleanly
    closes by itself. Drag the line between two panes to resize them
    (double-click to make them equal). Another window or device shows the
    same panes.
  • A files panel (⇧⌘E, or the folder in the title bar, which glows
    while it's open): the project's folders and files with git's marks
    (changed, new, ignored), and a box that finds any file in the project.
    Right-click a file to copy its path, type it in the terminal, open it
    with its app or show it in Finder.
  • A small editor for quick fixes: click a file to open it in a tab
    beside the terminals, with syntax colours for about 30 languages, search
    (⌘F) and ⌘S to save. When an agent edits the same file, the editor
    follows it; a save never overwrites a change made since you opened the
    file (you choose to reload or keep yours). Files that may hold keys or
    passwords (.env, *.pem…) are never opened.
The files panel with git marks, and a file open in an editor tab beside the terminals

Everyday developer tools

The chores around an agent's work, without leaving the project.

The commit dialog: the changed files, a message drafted by Claude Code, and Commit or Commit & push
  • Commit, push and pull requests: Commit… under the changed files in
    the side panel's GIT section opens a dialog with the files and a message
    box; ✨ Draft it asks Claude Code (claude -p) to write the message
    from the diff, in the style of your recent commits, and nothing is
    committed until you click. Commit & push does both; Push ↑2 pushes
    what's ahead (setting the upstream the first time); Open a pull
    request
    runs gh pr create --fill. Files that look like they hold
    secrets (.env, keys…) are never committed: the commit stops and names
    them.
  • CI at a glance: the branch's pull request shows under the files with
    its checks: ✓ passed, ● running, ✕ failed (and which). It's read with the
    GitHub CLI (gh), about once a minute.
  • Scripts, one click away: the SCRIPTS section lists what the project
    knows how to run: package.json scripts (with pnpm, yarn, bun or npm,
    from the lockfile), Makefile targets, justfile recipes, deno.json
    tasks, and Cargo and Go commands. A click runs one in a tab of its own; a
    running one is marked and goes to its tab. In ⇧⌘P, run dev runs it too.
  • Ports: the PORTS section lists what the project's tabs are listening
    on (:5173 node · web), and other processes of yours working in its
    folder. open opens it in the browser, tab goes to the tab that
    started it, stop ends it ("port 3000 is already in use", solved).
  • Checkpoints before every prompt: each time you send an agent a
    prompt, Quarters quietly snapshots the project's files (everything git
    doesn't ignore, committed or not). The CHECKPOINTS section lists them with
    what changed after each; open one to see every file's diff since, and
    restore to put the files back as they were. Restoring takes a
    checkpoint first, so it can be undone too. Your branch, index and stash
    are never touched: checkpoints are commits kept under
    refs/quarters/checkpoints/, the last 50 per project, and a plain
    git push doesn't send them anywhere.
What changed since a checkpoint: the files on the left, a file's diff on the right, and Restore these files
  • Clickable errors: src/cart.ts:42:7 (or file.py:12, File "x.py", line 3, Foo.cs(10,5)) in any terminal is a link when the file
    is in the project: ⌘-click opens it in the editor at that line.
  • Send to agent: select output in a terminal, or lines in the editor,
    and press ⇧⌘L (or the button that appears): it's typed into the
    project's agent tab, with the file and line numbers from the editor, but
    not sent, so you can say what to do with it.
A failing test's file:line is a link (⌘-click to open cart.ts at line 42), and the selected error can be sent to the agent
  • Search every project (⇧⌘K): one box searches the files of all
    your projects at once, with ripgrep when it's installed (git grep
    otherwise). Match case, whole words, regular expressions and a file
    filter (*.go); results by project and file, and Enter opens the file at
    the line. Files that may hold secrets are never searched.
Searching every project for csrf: matches in api-gateway, website and shop, by file, with the match highlighted

Coding agents

Choose the default in Settings → Coding agent, and per project from the
side panel's Agent menu (or ✎ on the project). Agents that aren't
installed are marked, and starting one tells you where to get it.

Agent Starts Continue (⇧C) Skip permission prompts (yolo) Side panel
Claude Code (default) claude --continue --dangerously-skip-permissions everything below
Codex codex resume --last --dangerously-bypass-approvals-and-sandbox git, automations
Gemini CLI gemini --resume latest --yolo git, automations
Antigravity agy --continue --dangerously-skip-permissions plan and model quotas¹, git, automations
OpenCode opencode --continue — (set in its own config) git, automations
GitHub Copilot CLI copilot --continue --allow-all-tools git, automations
Devin devin --continue --permission-mode bypass git, automations
Aider aider --restore-chat-history --yes-always git, automations
Amp amp threads continue --last --dangerously-allow-all git, automations
Goose goose session --resume — (GOOSE_MODE=auto in its config) git, automations
Qwen Code qwen --continue --yolo git, automations
Cursor CLI agent --continue --force git, automations

Claude Code gets the deepest integration, because Quarters reads its session
logs: session stats, plan usage, past conversations, the phone's chat view
and Remote Control. Other agents run as they are, in their terminal (on a
phone with the same message card as Claude), with everything else Quarters does — tabs, alerts, automations, worktrees, git,
remote access — working the same.

¹ Read from the Antigravity IDE while it's open on the same machine, through
its local (unofficial) interface; nothing leaves the machine.

Agent teams (Claude Code) run inside the tab. Quarters starts Claude Code
with --settings '{"teammateMode":"in-process"}', so teammates run in the
agent's own terminal (↓ from an empty prompt manages them), on the Mac and
in a browser alike. With "teammateMode": "tmux" in your Claude Code
settings they would open in tmux panes no Quarters window shows, or fail
with "To use agent swarms, install tmux". A --settings of your own in the
project's command is left alone. Tabs also don't inherit the TMUX (or
screen) variables of a terminal Quarters was started from, so no agent
thinks it's inside tmux when it isn't.

Automations: your dev stack in one action

An automation running the backend and the frontend side by side

An automation opens a set of terminals, each in its own folder and running
its own command, arranged as a grid, side by side, stacked or as tabs. Run it
by hand (▶), when the project opens, or on a schedule (every weekday at
09:00, say). Servers your terminals start show up in the side panel with
whether they're answering.

The side panel: what your agent is doing

The side panel: git with Commit and Push, the pull request's checks, servers, scripts, ports and checkpoints
  • Plan: Claude's usage limits and when they reset, as /usage shows
    them, with a warning before you run out (Antigravity: its plan and model
    quotas).
  • Agent and Automations: the project's coding agent, and its
    automations with run, stop, edit, delete and + new.
  • Session: title, model, permission mode, prompts, context window use,
    tokens (this session or today) and activity.
  • Git: branch, ahead/behind, changed files, Commit…, Push and
    Open a pull request, and the pull request's checks.
  • Claude changed: the files Claude edited this session; click one for its
    diff.
  • Servers: localhost links your terminals printed, up or down.
  • Scripts and Ports: the project's scripts to run in a tab, and
    what its tabs listen on, to open or stop.
  • Checkpoints: a snapshot before each prompt, to diff against or
    restore.
  • Usage: the project's tokens today, over 7 and 30 days, and its share
    of yours; ⇧⌘U ranks every project (from Claude Code's logs).
  • Instructions: edit the project's CLAUDE.md, AGENTS.md,
    GEMINI.md or CONVENTIONS.md (the one its agent reads is offered even
    before it exists), and your own notes on the project, kept by Quarters
    outside the project folder.
  • Click a section's title to fold it to one line; the bar above the panel
    jumps to a section or folds them all. Each device remembers its own.
  • Tools, MCP servers and skills available in the project.
  • Claude Remote Control: a switch that starts new Claude tabs with
    Claude Code's own Remote Control, so you can also continue them from
    claude.ai/code and the Claude app.
The diff of a file Claude changed Usage by project: every project's tokens over the last 7 days, ranked

Past conversations, restarts and worktrees

Searching a project's past Claude conversations
  • Search past conversations (🕘 / ⇧⌘F): everything you and Claude said in
    a project; open one to resume it.
  • Pick up where you left off: after a restart (or a crash), Quarters
    offers to reopen every conversation and automation that was running.
  • Git worktrees (⎇ / ⇧⌘G): start Claude on a separate copy of the
    project, on its own branch, so several can work on the same repository
    without stepping on each other.

Settings: switch off what you don't need

Settings: every optional feature can be switched on or off

Every optional feature has a switch (checkpoints, scripts and ports among
them), and Claude's permission mode can be set globally or per project. Appearance picks light, dark or the
system's look, on each device.

Remote access: work from anywhere

Quarters on a phone

Run Quarters on the machine that has your code (a desktop at home, a Mac
mini in a cupboard) and use it from any browser: your laptop on the road,
an iPad, your phone. You see the same live sessions: start Claude on the
Mac, answer it from your phone, finish on the laptop.

  • On a phone, every coding agent gets the same session view: its
    transcript above, and a message card below (the one place to type, with
    ↑ send, ■ stop and the tab tools), the same for Claude Code, Codex and
    the rest. Claude Code's transcript reads like the Claude app: a chat with
    your messages, its replies, folded tool rows, the images it sends and
    buttons for its questions (▤ shows the terminal). Other agents show their terminal.
  • Installs as an app on your phone's home screen, with a key bar for the
    keys a phone lacks (esc, tab, ⇧tab, ctrl, arrows) and saved prompts.
  • Phone alerts when Claude is waiting, even with the app closed.
  • Passkeys (Face ID / Touch ID) to sign in. Devices can only be paired
    from the Mac, and each device can be limited to type only or watch only.
  • Start and stop the server from the app (⌥⌘R).
Remote Access: start the server, pair a phone with a QR code, manage devices

Install

Requirements: macOS 11 or later (or Linux, or Windows through WSL, for the server, below), and at least one coding agent
installed and signed in, on your PATH: Claude Code
(claude, the default) or one of the others. Quarters is developed and
tested on current macOS on Apple silicon; the app is universal (Apple
silicon and Intel).

With Homebrew:

brew install --cask amithgc/tap/quarters

The app is signed with a Developer ID and notarized by Apple, so it opens
like any other. brew update && brew upgrade --cask quarters updates it.
You can also download the zip from the
releases.

Building from source

You need Go 1.26+, Node.js 20+ and the Wails CLI:

go install github.com/wailsapp/wails/v2/cmd/[email protected]

git clone https://github.com/amithgc/quarters && cd quarters
make install        # builds Quarters.app and copies it to /Applications

make build builds it into build/bin/Quarters.app without installing. For
an Intel Mac use wails build -platform darwin/amd64. A build of your own is
signed ad hoc, so the first time macOS may ask you to confirm opening it
(right-click → Open).

Releasing (maintainers): scripts/release.sh 1.2.3 publishes a version
from a Mac: it signs and notarizes the app, publishes the GitHub release and
updates the Homebrew tap. Its header lists the one-time setup.

Linux: the server, used from a browser

On Linux, Quarters runs as a server with no window: leave it on the machine
that has your code (a home server, a big desktop, a box in a cupboard) and
use it from a browser or the phone app. Everything the browser version does
works: projects, Claude and shell tabs, automations, the chat view on
phones, plan usage, past conversations and worktrees. The Mac-only extras
(the window, the Dock badge, the global hotkey) are left out.

It is a single file with no dependencies besides your coding agent and git.
Install it with Homebrew on Linux (brew install amithgc/tap/quarters-server),
download it from the releases
(quarters-linux-amd64.tar.gz or -arm64), or build it (on any machine)
and copy it over:

git clone https://github.com/amithgc/quarters && cd quarters
make server          # build/bin/quarters-linux-amd64 and quarters-linux-arm64
scp build/bin/quarters-linux-amd64 my-server:/usr/local/bin/quarters

Then, on the server:

quarters --set-password amith   # the username and password to sign in with
quarters                        # start the server (it prints its addresses and a pairing link)

Add your projects from the browser (+ add) once signed in, or list them in
~/.config/quarters/config.json. To open it on your home network, set
"remote": {"lan": true} there; to reach it from anywhere, put a tunnel in
front (see Remote access setup). Plan usage is read
from ~/.claude/.credentials.json, where Claude Code keeps its login on
Linux.

Managing it without a window:

command does
quarters --set-password NAME set (or change) the username and password; signed-in browsers sign in again
quarters --pair a one-time link that pairs a device with a passkey (HTTPS or localhost only)
quarters --devices list the paired devices and the password sign-in
quarters --remove-device NAME unpair a device (by name or id); it is signed out at once
quarters --version which Quarters this is, e.g. Quarters 0.7.0 (linux/amd64, server); worth adding to a bug report
quarters --help all of the above

To keep it running, a systemd user service works well:

# ~/.config/systemd/user/quarters.service
[Unit]
Description=Quarters

[Service]
ExecStart=/usr/local/bin/quarters
Restart=on-failure

[Install]
WantedBy=default.target
systemctl --user enable --now quarters
loginctl enable-linger $USER    # keep it running when you're logged out

Docker: the server in a container

The docker/ folder has a Dockerfile and a compose.yaml that
run the Linux server with Claude Code inside, as a normal user (Claude Code
won't skip its permission prompts as root). Your projects live in a folder
you mount, and settings, sign-ins and conversations in a volume, so they
survive updates.

git clone https://github.com/amithgc/quarters && cd quarters/docker
mkdir -p code                       # your projects go here (or set CODE_DIR=/path/to/code)
docker compose build
docker compose run --rm quarters quarters --set-password amith   # username and password
docker compose up -d

Open http://localhost:8421 (or http://<the machine's IP>:8421 from
another device on your network) and sign in. Then:

  1. Sign Claude Code in, once: docker compose exec quarters claude,
    then /login; it prints a link to open in any browser and asks for the
    code it shows. The login stays in the volume.
  2. Add projects from the browser (+ add): folders under code/ are at
    /home/dev/code/… in the container. To clone one there:
    docker compose exec quarters git clone https://github.com/you/app code/app.
  3. Git: set your name and email once
    (docker compose exec quarters git config --global user.name "You", and
    user.email), or mount your ~/.gitconfig; mount ~/.ssh to push over
    SSH (both are in compose.yaml, commented out).

Good to know:

  • Your user id: files Quarters writes in code/ belong to user 1000. If
    your id (id -u) is different, build with
    QUARTERS_UID=$(id -u) docker compose build.
  • Ports: keep both numbers in "8421:8421" the same; the server checks
    the address it is reached at.
  • Changing the password: run the --set-password line again, then
    docker compose restart.
  • The home network only: the container answers plain HTTP from private
    addresses (your network, Tailscale), never from the internet. For HTTPS and
    passkeys, put a tunnel in front: set QUARTERS_URL in compose.yaml to its
    address (e.g. https://quarters.example.com) before the first start, and
    point the tunnel at http://localhost:8421 (cloudflared tunnel run --url http://localhost:8421 quarters, or tailscale serve --bg 8421). If the
    settings already exist, add "url" under "remote" in
    ~/.config/quarters/config.json (docker compose exec quarters vi …, or
    edit it in the browser) and restart.
  • Other agents: install them in the image (add a RUN line to the
    Dockerfile, e.g. npm i -g @openai/codex after adding Node.js).
  • Updating: change QUARTERS_VERSION in compose.yaml, then
    docker compose up -d --build. Claude Code updates itself.

On Windows, the same files run in Docker Desktop
(with its WSL 2 backend, the default). In PowerShell:

git clone https://github.com/amithgc/quarters; cd quarters\docker
mkdir code
docker compose build
docker compose run --rm quarters quarters --set-password amith
docker compose up -d

and open http://localhost:8421 in Edge or Chrome. Keep your projects in the
container's code folder (clone them there with docker compose exec, as
above) rather than pointing CODE_DIR at a folder on C:\: Windows folders
mounted into a container work, but git and file watching are slow on them.
The user id note above doesn't apply. Or skip Docker and run the server in
WSL directly (next section).

Windows: the server in WSL

On Windows, run the Linux server inside WSL
(wsl --install in an administrator PowerShell, then open Ubuntu), with
Claude Code and your projects in WSL too. Follow the Linux steps above inside
Ubuntu, start quarters, and open http://localhost:8421 in Edge or Chrome
on Windows: WSL passes localhost through, so passkeys (Windows Hello) and
installing it as an app work. To reach it from a phone, turn on WSL's
mirrored networking and the home network. The
install guide has every
step. Prefer a container? See Docker,
which has the Windows steps too.

Getting started

  1. Open Quarters. The first time, it lists the folders you used Claude Code
    in most recently (if you use it). Add others with + add (⌘O). If your projects are in
    Documents, Desktop or on an external drive, macOS asks whether Quarters
    may access them: allow it, or the project list stays empty.
  2. Click a project and press C. Its coding agent (Claude Code unless
    you chose another in Settings) starts in that folder.
  3. Add an automation for your dev servers: right-click the project →
    Automations → + Add automation.
  4. ⌘, opens Settings. Projects → Remote Access… sets up remote use.

Keyboard shortcuts

⇧⌘P: every command by name, with its shortcut
keys action
⌘/ all keyboard shortcuts (Help → Keyboard Shortcuts)
click, then C / ⇧C / S open a project, then start Claude / continue / a shell
⌘P or ⇧⇧ (tap Shift twice) jump to a project or automation
⇧⌘P every command, by name
⌘T / ⇧⌘T / ⌥⌘T new Claude tab / continue last conversation / shell tab
⌘W close tab (in a split: the pane)
⌘1–9, ⇧⌘[ ⇧⌘] switch tabs
⌘D / ⇧⌘D split: a shell beside / below this one (⌘[ ⌘] switch panes)
⌘J go to the session waiting for you longest
⌘B / ⌘I show or hide projects / side panel
⇧⌘E show or hide the files panel; a click opens a file in an editor tab, ⌘S saves
⇧⌘↵ focus mode: only the terminal
⌘O add a project
⌘, / ⌥⌘, Settings / edit config.json
⇧⌘F / ⇧⌘G search past conversations / worktrees
⇧⌘K search every project's files
⇧⌘L send the selection (terminal or editor) to the agent
⌘-click a file:line open it in the editor at that line
⇧⌘U usage by project
⌥⌘R start or stop the remote-access server
⌃⌥Space (from any app) bring Quarters forward, or hide it
⌘= / ⌘- / ⌘0 text size
⌘K clear the terminal

Also: Shift+Enter adds a new line in Claude Code; drop files on a
terminal to type their paths; hover [Image #N] to see a pasted image;
double-click a tab to rename it. Light and dark mode follow macOS, or pick
one in Settings → Appearance (each device keeps its own).

Remote access setup

Remote access is off until you start it, and it gives whoever signs in a
shell on your Mac. Read SECURITY.md for how it is protected.
In short, Quarters only listens on 127.0.0.1, and you choose the tunnel
that gives it a public HTTPS address.

  1. Give the Mac an HTTPS address with a tunnel. With Cloudflare and your own
    domain:

    brew install cloudflared
    cloudflared tunnel login
    cloudflared tunnel create quarters
    cloudflared tunnel route dns quarters quarters.example.com
    cloudflared tunnel run --url http://127.0.0.1:8421 quarters
    

    Or with Tailscale: tailscale funnel 8421, then use the
    https://….ts.net address it prints.

  2. In Quarters, Projects → Remote Access…: enter
    https://quarters.example.com and press Start server.

  3. Pair a device… and scan the QR code with your phone. It creates a
    passkey on the phone.

  4. On the phone, add the page to the home screen. From then on, open it and
    sign in with Face ID.

No tunnel? Leave the public URL empty and press Start server: Quarters
is then at http://localhost:8421, which another computer can reach through
SSH (ssh -L 8421:localhost:8421 your-mac, then open
http://localhost:8421 and the pairing link there). Phones need the tunnel.

At home, without a tunnel: turn on Home network in Remote Access and
set a username and password there. Phones and computers on the same Wi-Fi
then open http://<the Mac's IP>:8421 (the dialog shows the addresses and a
QR code) and sign in with the password, since passkeys don't work on a plain
IP address. The connection isn't encrypted, so keep it to networks you trust.
iPhones can add it to the home screen as is. Android's Chrome installs web
apps only from secure addresses, so on the home network tell it to trust
this one, once: in chrome://flags/#unsafely-treat-insecure-origin-as-secure
enter the address (e.g. http://192.168.1.20:8421), set it to Enabled and
relaunch; then ⋮ → Install app. The sign-in page shows these steps on
Android.

For a Mac with no screen, Quarters.app/Contents/MacOS/Quarters --serve
runs only the server (it uses the same settings and prints a pairing link);
the commands in Linux (--set-password,
--pair, --devices, --remove-device) work there too.

Configuration

Settings and projects live in ~/.config/quarters/config.json. Most of it is
edited from the app, but you can also edit the file (⌥⌘,): on the Mac in
your text editor, in a browser in Quarters' own editor, which won't save a
mistake or a change to remote access. Quarters picks up changes within
seconds, and tells you if the file has a mistake without ever overwriting
it.

{
  "projects": [
    { "name": "Shop", "path": "~/code/shop", "group": "Work", "icon": "web/favicon.svg",
      "automations": [
        { "name": "Start dev", "layout": "columns", "auto": true,
          "schedule": { "at": "09:00", "days": ["mon", "tue", "wed", "thu", "fri"] },
          "tabs": [
            { "name": "api", "dir": "backend", "command": "npm run dev" },
            { "name": "web", "dir": "web",     "command": "npm run dev" },
            { "name": "shell" }
          ] }
      ] },
    { "path": "~/code/api-gateway", "group": "Work", "command": ["claude", "--model", "sonnet"], "yolo": false },
    { "path": "~/code/ml", "harness": "codex" }
  ],
  "yolo": true,
  "shell": "/bin/zsh"
}
field meaning
projects[].path project folder (~ allowed); required
projects[].name label in the list (default: the folder name)
projects[].group heading to group projects under
projects[].icon image next to the project (png, jpg, svg, ico, webp; relative = inside the project), or an emoji, e.g. "🚀"
projects[].color colour of its tabs and terminal frame: #rrggbb or accent (default: from its name)
projects[].harness the coding agent for this project, overriding harness
projects[].command how the project's agent starts in this project
projects[].yolo true/false: skip the agent's permission prompts here, overriding yolo
projects[].automations terminals to start together (see below)
harness the coding agent new tabs start: claude (default), codex, gemini, antigravity, opencode, copilot, devin, aider, amp, goose, qwen or cursor
command how Claude Code starts (default ["claude"])
yolo skip the agent's permission prompts (default true; see below)
shell shell for shell tabs (default $SHELL)
prompts saved prompts for ⚡ (edited in Settings)
features optional features switched on or off (Settings), e.g. {"checkpoints": false}
hotkey global hotkey, e.g. ctrl+alt+space
usage_alert_at warn when a plan limit passes this percentage (default 80)
context_window tokens; 0 = read from Claude Code's model setting
remote remote access (set in the app)
layout panel widths and folded groups, saved as you change them

Automations: layout is grid (default), columns, rows (all
terminals as panes of one tab, resizable) or tabs. dir is relative to the
project. command is typed into a login shell once it's ready, so Ctrl+C
leaves you in that shell and ↑ runs it again. auto runs it when you open the
project. schedule runs it by itself once a day, unless it's already
running.

About yolo. By default Claude Code runs with
--dangerously-skip-permissions, so it edits files and runs commands
without asking. That's convenient in your own projects and risky anywhere
else. Turn it off in Settings, or per project.

Other agents get their own switch: Codex
--dangerously-bypass-approvals-and-sandbox, Gemini CLI --yolo,
Antigravity --dangerously-skip-permissions, Copilot CLI
--allow-all-tools, Devin --permission-mode bypass, Aider --yes-always,
Amp --dangerously-allow-all, Qwen Code --yolo, Cursor CLI --force
(OpenCode and Goose have none; set it in their own config). "Continue"
runs codex resume --last, gemini --resume latest, agy --continue,
opencode --continue, copilot --continue, devin --continue,
aider --restore-chat-history, amp threads continue --last,
goose session --resume, qwen --continue or agent --continue.

How it works

Quarters is a Wails app: a Go backend with a plain
JavaScript frontend in the system WebView.

  • Each session runs in a pseudo-terminal on the Go side (internal/session),
    and xterm.js draws it. Every window, the Mac's and
    any browser's, shows the same sessions; whichever one you're typing in
    sets the terminal's size.
  • Each coding agent is a program started in a pseudo-terminal with its own
    switches (internal/config/harness.go).
  • The side panel reads Claude Code's own session logs in ~/.claude/projects
    (internal/stats). Plan usage comes from the endpoint /usage uses, with
    the login Claude Code keeps in the Keychain, which is only ever sent to
    Anthropic.
  • The developer tools run your own programs: git for commits and
    checkpoints (snapshots go through a temporary index, so yours is never
    touched), gh for pull requests and checks, claude -p for a drafted
    commit message, lsof (or ss) for ports, and rg (or git grep) for
    search.
  • Remote access (internal/remote) is an HTTP server with passkey
    (WebAuthn) sign-in and a WebSocket carrying the same calls and events the
    Mac window uses.
  • Idle, it stays out of the way: git runs only when something may have
    changed, files are read again only when they change, the project list is
    pushed to windows when it changes, and nothing on a timer runs while the
    window is hidden. Measured on a Mac with 14 projects, idle in the
    background: about 2% of one CPU core.
main.go, app.go, …     the app: window, menus, the functions the frontend calls
internal/config        config.json
internal/projects      the project list and icons
internal/session       pseudo-terminals
internal/stats         Claude Code logs, git, plan usage (Claude, Antigravity), conversations, skills
internal/remote        remote access: passkeys, sessions, WebSocket, push
frontend/dist          the frontend (plain ES modules, no bundler; ui/ holds the dialogs, loaded when first opened)
tools/mascot           draws the mascot

FAQ

How is this different from tmux?
tmux can hold all the sessions, and with enough scripts it can do much of
the rest. Quarters is what those scripts would add up to, without writing
them: a list of your projects with their git status, an agent started in one
key, a mark on the session that finished and is waiting for you (⌘J goes to
it), a side panel with the session's model, context, tokens, plan usage and
the files the agent changed, automations that start the dev servers with
the project, and the same live sessions in a phone's browser, signed in with
a passkey. If you live in tmux and like it there, keep it; Quarters is for
people who'd rather click a project than remember a session name.

Why not tabs in iTerm2, Ghostty, Warp or the Terminal?
A terminal knows about shells, not projects or agents. Tabs don't tell you
which agent is done, can't start a project's backend and frontend together,
and can't be picked up from your phone. Quarters keeps one place per project
(its agent tabs, shells and servers) and leaves the general terminal work
to your terminal.

What about apps that run many agents on one repository?
Several tools run a team of agents in parallel worktrees of a single
repository. Quarters starts from the other end: many projects, each with
the agent and the dev stack it needs, and quick switching between them. It
does worktrees too (⎇), when you want several agents on one repository.

Is it an editor?
No. The files panel and its editor are for a look or a quick fix (a
config value, a line the agent got wrong) without leaving the project.
Keep your editor for real work; Quarters follows its changes on the disk
the same way it follows the agent's.

Does my code or my prompts go anywhere?
No. Quarters has no AI of its own, no accounts and no analytics. It starts
the agents you installed, with their own logins, and they talk to their
providers as they always do. Remote access is off until you start it, and
then it only listens on this Mac (see SECURITY.md).

Does ✨ Draft it send my code anywhere?
Only when you click it: it runs your own Claude Code (claude -p) with the
diff of the commit (files that look like they hold secrets left out), the
same as asking it in a terminal, and uses your plan the same way.

Where do checkpoints live, and do they get pushed?
In the project's own git repository, as commits under
refs/quarters/checkpoints/ (the last 50). They aren't on any branch, so
git push doesn't send them; git for-each-ref refs/quarters lists them,
and switching Checkpoints off in Settings stops new ones.

Does it work with my Claude subscription or API key?
Yes: it runs claude (or another agent) exactly as you would in a
terminal, signed in however you signed it in.

Do sessions keep running when I quit Quarters?
No, the agents run inside Quarters. When it starts again, it offers to
reopen the conversations and automations that were open, and Claude Code
picks each conversation up where it left off. To keep agents running while
you're away, leave Quarters running on that machine (or run the
server on a Linux box) and use it
from a browser.

Contributing

Contributions are welcome. See CONTRIBUTING.md for setup
and guidelines:

make dev       # run with live reload
make test      # go test -race ./...
make lint      # gofmt, go vet, staticcheck

Please report security problems privately, as described in
SECURITY.md.

Credits

Built with Wails, xterm.js,
JetBrains Mono,
go-webauthn and the other
libraries in THIRD_PARTY_NOTICES.md. The mascot is
original to Quarters.

License

MIT © 2026 Amith

Yorumlar (0)

Sonuc bulunamadi