{
  "name": "atc",
  "kind": "registry",
  "title": "atc",
  "description": "Your Claude Code sessions on every machine, through atc (github.com/zcag/atc): see which ones need you, answer them in a live chat or their own terminal, and start, resume or stop them without leaving pal.",
  "version": "0.1.0",
  "icon": {
    "tile": {
      "svg": "M16.5 20.5a2.75 2.75 0 0 1 5.5 0v23a2.75 2.75 0 0 1-5.5 0zM29.5 23.25h15.25a2.75 2.75 0 0 1 0 5.5H29.5a2.75 2.75 0 0 1 0-5.5zM29.5 35.25h8.5a2.75 2.75 0 0 1 0 5.5h-8.5a2.75 2.75 0 0 1 0-5.5z",
      "box": 64,
      "bg": "#151c27"
    }
  },
  "author": "pal",
  "spec": "github:zcag/pal/extensions/atc@v0.17.4",
  "source": "https://github.com/zcag/pal-extensions/tree/HEAD/atc",
  "commit": "4d2559cf9c04d0133c97d7c897f19a14acb9eace",
  "manifest": {
    "name": "atc",
    "title": "atc",
    "description": "Your Claude Code sessions on every machine, through atc (github.com/zcag/atc): see which ones need you, answer them in a live chat or their own terminal, and start, resume or stop them without leaving pal.",
    "keywords": [
      "claude",
      "cc",
      "agents"
    ],
    "version": "0.1.0",
    "icon": {
      "tile": {
        "svg": "M16.5 20.5a2.75 2.75 0 0 1 5.5 0v23a2.75 2.75 0 0 1-5.5 0zM29.5 23.25h15.25a2.75 2.75 0 0 1 0 5.5H29.5a2.75 2.75 0 0 1 0-5.5zM29.5 35.25h8.5a2.75 2.75 0 0 1 0 5.5h-8.5a2.75 2.75 0 0 1 0-5.5z",
        "box": 64,
        "bg": "#151c27"
      }
    },
    "author": "pal",
    "repo": "bundled",
    "license": "MIT",
    "settings": [
      {
        "kind": "text",
        "id": "url",
        "label": "atc server",
        "description": "The address of your atc server. Empty uses the one atc login saved on this machine.",
        "placeholder": "https://atc.example.internal",
        "default": ""
      },
      {
        "kind": "secret",
        "id": "token",
        "label": "Token",
        "description": "What atc token prints on the server. Empty uses the one atc login saved; a server that trusts your tailnet needs none. Kept in the OS keychain.",
        "default": ""
      },
      {
        "kind": "select",
        "id": "open",
        "label": "Open a session in",
        "description": "Where Open in a terminal app goes. Auto runs atc attach in a terminal when the atc command is on this machine, and opens atc's web page otherwise.",
        "options": [
          {
            "id": "auto",
            "title": "Auto"
          },
          {
            "id": "terminal",
            "title": "A terminal (atc attach)"
          },
          {
            "id": "browser",
            "title": "atc's web page"
          }
        ],
        "default": "auto"
      },
      {
        "kind": "select",
        "id": "terminal",
        "label": "Terminal",
        "description": "Which terminal atc attach opens in; Auto takes the first one installed.",
        "options": [
          {
            "id": "auto",
            "title": "Auto"
          },
          {
            "id": "kitty",
            "title": "kitty"
          },
          {
            "id": "Ghostty",
            "title": "Ghostty"
          },
          {
            "id": "iTerm2",
            "title": "iTerm2"
          },
          {
            "id": "Terminal",
            "title": "Terminal"
          },
          {
            "id": "Alacritty",
            "title": "Alacritty"
          }
        ],
        "default": "auto"
      }
    ],
    "palettes": {
      "sessions": {
        "title": "Sessions",
        "description": "Every session atc lists, the ones that need you first: the machine, folder and branch, what it is doing or asking to run, or what its turn ended on in one line; the pane leads with atc's summary of the reply, then your last message, the reply itself, its pages and what it spent.",
        "kind": "live",
        "lazy": true,
        "tier": "primary",
        "remember": false,
        "keys": [
          {
            "keys": "enter",
            "title": "Open the chat (Tab, a message, Enter sends it first)"
          },
          {
            "keys": "cmd+y",
            "title": "Allow what it asks to run"
          },
          {
            "keys": "cmd+.",
            "title": "Say no, or interrupt a working turn"
          },
          {
            "keys": "cmd+o",
            "title": "Open its terminal in pal"
          },
          {
            "keys": "cmd+shift+t",
            "title": "Open in a terminal app (atc attach)"
          },
          {
            "keys": "cmd+shift+o",
            "title": "Open in atc's web page"
          },
          {
            "keys": "cmd+u",
            "title": "Outputs: the servers, files and links it made"
          },
          {
            "keys": "cmd+l",
            "title": "Open its published page (several: its outputs)"
          },
          {
            "keys": "cmd+shift+r",
            "title": "Resume a stopped session"
          },
          {
            "keys": "cmd+shift+p",
            "title": "Pin or unpin"
          },
          {
            "keys": "cmd+shift+e",
            "title": "Rename"
          },
          {
            "keys": "cmd+c",
            "title": "Copy the resume command"
          },
          {
            "keys": "cmd+d",
            "title": "Stop the session (asks first)"
          }
        ]
      },
      "chat": {
        "title": "Chat",
        "description": "One session as a chat that follows it live: the conversation, a finished turn's long reply summed up under it, what it is doing now, a permission prompt with its two keys, its published pages, and a message field. Opened bare, the session that needs you most.",
        "kind": "view",
        "keys": [
          {
            "keys": "enter",
            "title": "Send the message (a stopped session is resumed first)"
          },
          {
            "keys": "cmd+y",
            "title": "Allow"
          },
          {
            "keys": "cmd+.",
            "title": "Say no, or interrupt"
          },
          {
            "keys": "cmd+shift+v",
            "title": "Attach the clipboard: text into the message, a picture or files uploaded with it"
          },
          {
            "keys": "cmd+o",
            "title": "Open its terminal in pal"
          },
          {
            "keys": "cmd+u",
            "title": "Outputs"
          },
          {
            "keys": "cmd+l",
            "title": "Open its published page"
          },
          {
            "keys": "cmd+shift+c",
            "title": "Copy the last reply"
          },
          {
            "keys": "cmd+[",
            "title": "Older messages"
          }
        ]
      },
      "terminal": {
        "title": "Terminal",
        "description": "A session's own terminal inside pal, Claude Code's screen as atc attach shows it, in the panel's colours: type into it, scroll it, answer any prompt. A stopped session is resumed first. Opened bare, the session that needs you most.",
        "kind": "view",
        "keys": [
          {
            "keys": "cmd+.",
            "title": "Send Escape (ctrl+[ too): interrupt, say no; Escape itself goes back"
          },
          {
            "keys": "cmd+shift+f",
            "title": "Fit the terminal to this window"
          }
        ]
      },
      "new": {
        "title": "New Session",
        "description": "Start Claude Code from one of atc's presets (a folder with standing instructions) or in a folder on any machine atc lists: the folders you used lately, then those under atc's roots; Tab to type the first message and a name.",
        "kind": "live",
        "lazy": true,
        "keys": [
          {
            "keys": "enter",
            "title": "Start a session there"
          },
          {
            "keys": "cmd+enter",
            "title": "Start it in a new git worktree"
          }
        ]
      },
      "history": {
        "title": "Earlier Conversations",
        "description": "Past conversations on every machine, newest first, found by title, folder or what you asked: read one, or resume it in the background.",
        "kind": "list",
        "lazy": true,
        "ttl": 300,
        "keys": [
          {
            "keys": "enter",
            "title": "Read it (a message typed after Tab resumes it)"
          },
          {
            "keys": "cmd+enter",
            "title": "Resume"
          },
          {
            "keys": "cmd+c",
            "title": "Copy the resume command"
          }
        ]
      },
      "outputs": {
        "title": "Outputs",
        "description": "What your running sessions made: the pages they published first, with a preview, then the servers they started, the files they wrote or read, the links they gave.",
        "kind": "live",
        "lazy": true,
        "keys": [
          {
            "keys": "enter",
            "title": "Open"
          },
          {
            "keys": "cmd+c",
            "title": "Copy the address or path"
          }
        ]
      }
    },
    "states": {
      "needs_you": {
        "description": "Sessions waiting on you to allow something or answer",
        "kind": "number"
      },
      "your_turn": {
        "description": "Sessions that finished their turn",
        "kind": "number"
      },
      "working": {
        "description": "Sessions working",
        "kind": "number"
      },
      "week_used": {
        "description": "How much of the plan's weekly limit is used, in percent",
        "kind": "number"
      }
    },
    "bar": {
      "sessions": {
        "title": "Sessions",
        "description": "A count per state in its colour (red needs you, amber your turn, blue working), the plan's limit once atc warns about it, an alarm while one needs you; the tooltip says what each finished turn ended on; the popover lists them by state on every machine with the plan's limits, opens a chat, allows or refuses a prompt, starts a new one.",
        "refresh": {
          "every": 30,
          "on": [
            "show",
            "wake",
            "network"
          ]
        },
        "mocks": {
          "needs": {
            "title": "One needs you",
            "item": {
              "icon": {
                "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAABHVBMVEUAAAD/ZmbvWFj/QED0WVnxVFvyVFvyVFvxVFvzUV3yU1nyVFvxU1vyVVz/SUnyU1ryVFv/VVXyVFzyU1vyVFvyVFvzVVvyVFuPmaOLlaeKlKaLlKeMlKeLlKiOjqqAgL+LlaeLlKeLlaeMlaeAgICLlKiLlaeKlKeLlaeImaqLlqeLlaeAmbOLlKeQkKaLlaeqqqqLlaeLlaeMlaeMlaiJlaiLlaeLlaeLlaeLlaeMlKWMk6aLlqaLlaeLlaaSkqSPlqWHlqWHl6eMmKqLlaeKlaf///+MlqaKlaqLlqiLlaeLlqiLlaiJl6WLlaeLlKeJlqqNlKiMlaeLlKfyVFzyVFvzVFvyV17zVVXyVFvzU1ryWVnvUlryVFuLlaew9jNLAAAAXXRSTlMABSAEF5fw75UWKOPiJwfZ1wZkYrCuzdIZY4GIfE8JBIv551QCrP5i9x7Qggq9F8oD9KuoWyn2zvXZHyin44QOIhEgKqlgAVAYYYByzzbG7ScmcTdh1eEmFe6TFB8mzDrZAAABXUlEQVRYw+3Y51ICMRAH8BNUUEHBQvHEE8WOep4FewNOsGAFG8n7P4YztnNGbrM7ySAf8n+A34dMdpNdw9Bpe7oCgaACprunl7FQuE/W6R9gH4lE5ZzBIfaVWFwKGmY/GZGCRj1oTApKeFBCCkp6UFJD/wWl0uOmIBOZSSFkTWU5ItMzAig3y3GZm4ehNMdmYRGEltAQX4agPN7hKxC0SoDWIMhex0MOeEYbeGgThLa2sU7Bhi9kZgfn7O6JSmT/AHFOh0fHiKLNpU4EOdWNTUMa6iTI/lu0Z3k6VCy17EiFskuDzn1bpGNRoCLQak0KVALaYraCh2ywY1fxEPxAXuAh+Mm+JJzRFQRdE6Ay4NRcAuQ6vs7NLelCWqbP1692R621SrXFZ/T+wdX9qAMgZYOfslH013D8KAXFY99OXW5cN6KRT6fxJLuKeA6HGHt5fVOwHQk2myqWLDptyTvp3wxbpPoI1AAAAABJRU5ErkJggg==",
                "template": true
              },
              "segments": [
                {
                  "id": "needs",
                  "text": "1",
                  "color": "red"
                },
                {
                  "id": "turn",
                  "text": "2",
                  "color": "amber"
                },
                {
                  "id": "working",
                  "text": "3",
                  "color": "blue"
                }
              ],
              "tooltip": "1 needs you, 2 your turn, 3 working"
            }
          },
          "working": {
            "title": "All working",
            "item": {
              "icon": {
                "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAABHVBMVEUAAAD/ZmbvWFj/QED0WVnxVFvyVFvyVFvxVFvzUV3yU1nyVFvxU1vyVVz/SUnyU1ryVFv/VVXyVFzyU1vyVFvyVFvzVVvyVFuPmaOLlaeKlKaLlKeMlKeLlKiOjqqAgL+LlaeLlKeLlaeMlaeAgICLlKiLlaeKlKeLlaeImaqLlqeLlaeAmbOLlKeQkKaLlaeqqqqLlaeLlaeMlaeMlaiJlaiLlaeLlaeLlaeLlaeMlKWMk6aLlqaLlaeLlaaSkqSPlqWHlqWHl6eMmKqLlaeKlaf///+MlqaKlaqLlqiLlaeLlqiLlaiJl6WLlaeLlKeJlqqNlKiMlaeLlKfyVFzyVFvzVFvyV17zVVXyVFvzU1ryWVnvUlryVFuLlaew9jNLAAAAXXRSTlMABSAEF5fw75UWKOPiJwfZ1wZkYrCuzdIZY4GIfE8JBIv551QCrP5i9x7Qggq9F8oD9KuoWyn2zvXZHyin44QOIhEgKqlgAVAYYYByzzbG7ScmcTdh1eEmFe6TFB8mzDrZAAABXUlEQVRYw+3Y51ICMRAH8BNUUEHBQvHEE8WOep4FewNOsGAFG8n7P4YztnNGbrM7ySAf8n+A34dMdpNdw9Bpe7oCgaACprunl7FQuE/W6R9gH4lE5ZzBIfaVWFwKGmY/GZGCRj1oTApKeFBCCkp6UFJD/wWl0uOmIBOZSSFkTWU5ItMzAig3y3GZm4ehNMdmYRGEltAQX4agPN7hKxC0SoDWIMhex0MOeEYbeGgThLa2sU7Bhi9kZgfn7O6JSmT/AHFOh0fHiKLNpU4EOdWNTUMa6iTI/lu0Z3k6VCy17EiFskuDzn1bpGNRoCLQak0KVALaYraCh2ywY1fxEPxAXuAh+Mm+JJzRFQRdE6Ay4NRcAuQ6vs7NLelCWqbP1692R621SrXFZ/T+wdX9qAMgZYOfslH013D8KAXFY99OXW5cN6KRT6fxJLuKeA6HGHt5fVOwHQk2myqWLDptyTvp3wxbpPoI1AAAAABJRU5ErkJggg==",
                "template": true
              },
              "segments": [
                {
                  "id": "working",
                  "text": "2",
                  "color": "blue"
                }
              ],
              "tooltip": "2 working"
            }
          },
          "quiet": {
            "title": "Nothing running",
            "item": {
              "hidden": true,
              "empty": {
                "icon": {
                  "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAABHVBMVEUAAAD/ZmbvWFj/QED0WVnxVFvyVFvyVFvxVFvzUV3yU1nyVFvxU1vyVVz/SUnyU1ryVFv/VVXyVFzyU1vyVFvyVFvzVVvyVFuPmaOLlaeKlKaLlKeMlKeLlKiOjqqAgL+LlaeLlKeLlaeMlaeAgICLlKiLlaeKlKeLlaeImaqLlqeLlaeAmbOLlKeQkKaLlaeqqqqLlaeLlaeMlaeMlaiJlaiLlaeLlaeLlaeLlaeMlKWMk6aLlqaLlaeLlaaSkqSPlqWHlqWHl6eMmKqLlaeKlaf///+MlqaKlaqLlqiLlaeLlqiLlaiJl6WLlaeLlKeJlqqNlKiMlaeLlKfyVFzyVFvzVFvyV17zVVXyVFvzU1ryWVnvUlryVFuLlaew9jNLAAAAXXRSTlMABSAEF5fw75UWKOPiJwfZ1wZkYrCuzdIZY4GIfE8JBIv551QCrP5i9x7Qggq9F8oD9KuoWyn2zvXZHyin44QOIhEgKqlgAVAYYYByzzbG7ScmcTdh1eEmFe6TFB8mzDrZAAABXUlEQVRYw+3Y51ICMRAH8BNUUEHBQvHEE8WOep4FewNOsGAFG8n7P4YztnNGbrM7ySAf8n+A34dMdpNdw9Bpe7oCgaACprunl7FQuE/W6R9gH4lE5ZzBIfaVWFwKGmY/GZGCRj1oTApKeFBCCkp6UFJD/wWl0uOmIBOZSSFkTWU5ItMzAig3y3GZm4ehNMdmYRGEltAQX4agPN7hKxC0SoDWIMhex0MOeEYbeGgThLa2sU7Bhi9kZgfn7O6JSmT/AHFOh0fHiKLNpU4EOdWNTUMa6iTI/lu0Z3k6VCy17EiFskuDzn1bpGNRoCLQak0KVALaYraCh2ywY1fxEPxAXuAh+Mm+JJzRFQRdE6Ay4NRcAuQ6vs7NLelCWqbP1692R621SrXFZ/T+wdX9qAMgZYOfslH013D8KAXFY99OXW5cN6KRT6fxJLuKeA6HGHt5fVOwHQk2myqWLDptyTvp3wxbpPoI1AAAAABJRU5ErkJggg==",
                  "template": true
                },
                "tooltip": "Nothing running"
              }
            }
          }
        },
        "rules": [
          {
            "id": "needs",
            "when": "atc.needs_you \u003e 0",
            "description": "A session waits on you.",
            "urgent": true
          }
        ],
        "keys": [
          {
            "keys": "enter",
            "title": "Open the row's chat (r too)"
          },
          {
            "keys": "y",
            "title": "Allow what it asks to run"
          },
          {
            "keys": "i",
            "title": "Say no, or interrupt a working turn"
          },
          {
            "keys": "o",
            "title": "Open its terminal (in the popover)"
          },
          {
            "keys": "a",
            "title": "Open in a terminal app (atc attach)"
          },
          {
            "keys": "w",
            "title": "Open in atc's web page"
          },
          {
            "keys": "u",
            "title": "Outputs"
          },
          {
            "keys": "x",
            "title": "Stop the session (asks first)"
          },
          {
            "keys": "n",
            "title": "New session"
          },
          {
            "keys": "h",
            "title": "Earlier conversations"
          },
          {
            "keys": "p",
            "title": "Open Sessions in pal"
          },
          {
            "keys": "up",
            "title": "Move the cursor (down, j, k too; a click sets it)"
          }
        ]
      }
    },
    "links": {
      "open": {
        "description": "Open a session's chat",
        "params": {
          "session": {
            "description": "A session id, its background id, or words of its title; absent, the one that needs you most"
          }
        }
      },
      "send": {
        "description": "Send a message to a session",
        "params": {
          "session": {
            "description": "A session id, its background id, or words of its title",
            "required": true
          },
          "text": {
            "description": "The message"
          },
          "file": {
            "description": "A file to upload with it (repeat for several)",
            "type": "string[]"
          }
        }
      },
      "new": {
        "description": "Start a session, in a folder or from a preset",
        "params": {
          "dir": {
            "description": "The folder, absolute or under ~ (or a preset's)"
          },
          "preset": {
            "description": "A preset's name: its folder, name and standing instructions, on its own machine"
          },
          "prompt": {
            "description": "The first message"
          },
          "name": {
            "description": "A name for it"
          },
          "host": {
            "description": "The machine, when atc lists several"
          },
          "worktree": {
            "description": "In a new git worktree",
            "type": "boolean"
          }
        }
      }
    },
    "store": {
      "tagline": "Every Claude Code session on every machine, answered from pal",
      "category": "integration",
      "features": [
        "Every session on every machine your atc server lists, the ones that need you first, with what each is doing or asking to run",
        "A finished turn read in one line: atc's summary of the reply on the row, its gist and overview in the pane and the chat, the statuses in the bar's tooltip",
        "A chat per session that follows it live: read the conversation, type a message, `cmd+y` allows a prompt, `cmd+.` says no or interrupts",
        "A session's own terminal inside pal (`cmd+o`): Claude Code's screen live in the panel's colours, to type into, scroll and answer anything",
        "A bar item counting sessions by state, an alarm while one needs you, the plan's limit once it runs high; its popover answers them without opening pal",
        "Start Claude in a folder on any machine, in a new worktree, or from one of atc's presets, with the first message typed in the bar",
        "Earlier conversations from every machine, read or resumed in the background",
        "The pages a session published, the servers, files and links it made, one Enter from open; what each session spent; the clipboard attached with `cmd+shift+v`",
        "Built on atc (github.com/zcag/atc), a small server for Claude Code's background sessions; a machine where atc login was run needs no setup"
      ],
      "permissions": [
        "network",
        "token"
      ],
      "platforms": [
        "macos",
        "linux"
      ],
      "screenshots": [
        {
          "file": "1-list.png",
          "caption": "Every session on every machine atc lists: the ones that need you first, with what each is doing or asking to run"
        },
        {
          "file": "2-detail.png",
          "caption": "The pane: what a finished turn ended on, summed up by atc, then your message and the reply; its page and what it spent below"
        },
        {
          "file": "3-chat.png",
          "caption": "Enter opens the chat: the conversation live, the command it asks to run with cmd+y to allow and cmd+. to say no, a field to reply"
        },
        {
          "file": "4-new.png",
          "caption": "New Session: a folder on any machine, the first message typed after Tab"
        },
        {
          "file": "5-actions.png",
          "caption": "⌘K on a session: allow, say no, open it in a terminal or atc's page, its outputs, pin, park, rename, stop"
        },
        {
          "file": "bar-menubar.png",
          "caption": "On the menu bar: how many sessions need you, are your turn and are working, the plan's limit once it runs high, an alarm while one needs you",
          "kind": "bar"
        },
        {
          "file": "bar-popover.png",
          "caption": "A click opens the popover: every session by state on every machine, what each finished turn ended on, the plan's limits; Enter opens its chat, y allows, i says no",
          "kind": "bar",
          "box": [
            374,
            64,
            840,
            960
          ]
        },
        {
          "file": "bar-popover-chat.png",
          "caption": "The chat in the popover: the conversation, its page, and what the turn ended on summed up, answered without opening pal",
          "kind": "bar",
          "box": [
            374,
            64,
            840,
            960
          ]
        },
        {
          "file": "bar-sketchybar.png",
          "caption": "On sketchybar: the three counts in red, amber and blue",
          "kind": "bar"
        }
      ]
    }
  },
  "playable": false,
  "updated_at": "2026-11-02T04:38:11Z",
  "url": "https://pal.cagdas.io/extensions/atc",
  "tagline": "Every Claude Code session on every machine, answered from pal",
  "category": "integration",
  "screenshots": [
    "https://pal.cagdas.io/extensions/atc/screenshots/1-list-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/1-list.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/2-detail-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/2-detail.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/3-chat-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/3-chat.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/4-new-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/4-new.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/5-actions-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/5-actions.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-menubar-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-menubar.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-popover-chat-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-popover-chat.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-popover-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-popover.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-sketchybar-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-sketchybar.png"
  ],
  "panel_screenshots": [
    "https://pal.cagdas.io/extensions/atc/screenshots/1-list.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/2-detail.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/3-chat.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/4-new.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/5-actions.png"
  ],
  "bar_screenshots": [
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-menubar.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-popover-chat.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-popover.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-sketchybar.png"
  ],
  "panel_screenshots_dark": [
    "https://pal.cagdas.io/extensions/atc/screenshots/1-list-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/2-detail-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/3-chat-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/4-new-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/5-actions-dark.png"
  ],
  "bar_screenshots_dark": [
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-menubar-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-popover-chat-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-popover-dark.png",
    "https://pal.cagdas.io/extensions/atc/screenshots/bar-sketchybar-dark.png"
  ],
  "has_bar": true,
  "bar_items": [
    {
      "id": "sessions",
      "title": "Sessions",
      "description": "A count per state in its colour (red needs you, amber your turn, blue working), the plan's limit once atc warns about it, an alarm while one needs you; the tooltip says what each finished turn ended on; the popover lists them by state on every machine with the plan's limits, opens a chat, allows or refuses a prompt, starts a new one.",
      "refresh": {
        "every": 30,
        "on": [
          "show",
          "wake",
          "network"
        ]
      },
      "refresh_words": "every 30s, when the panel shows, on wake, when the network is back"
    }
  ],
  "has_links": true,
  "links": [
    {
      "route": "open",
      "url": "pal://atc/open",
      "cli": "pal call atc/open",
      "description": "Open a session's chat",
      "params": [
        {
          "name": "session",
          "description": "A session id, its background id, or words of its title; absent, the one that needs you most"
        }
      ]
    },
    {
      "route": "send",
      "url": "pal://atc/send?session=\u003csession\u003e",
      "cli": "pal call atc/send session=\u003csession\u003e",
      "description": "Send a message to a session",
      "params": [
        {
          "name": "session",
          "description": "A session id, its background id, or words of its title",
          "required": true
        },
        {
          "name": "text",
          "description": "The message"
        },
        {
          "name": "file",
          "description": "A file to upload with it (repeat for several)",
          "type": "string[]"
        }
      ]
    },
    {
      "route": "new",
      "url": "pal://atc/new",
      "cli": "pal call atc/new",
      "description": "Start a session, in a folder or from a preset",
      "params": [
        {
          "name": "dir",
          "description": "The folder, absolute or under ~ (or a preset's)"
        },
        {
          "name": "preset",
          "description": "A preset's name: its folder, name and standing instructions, on its own machine"
        },
        {
          "name": "prompt",
          "description": "The first message"
        },
        {
          "name": "name",
          "description": "A name for it"
        },
        {
          "name": "host",
          "description": "The machine, when atc lists several"
        },
        {
          "name": "worktree",
          "description": "In a new git worktree",
          "type": "boolean"
        }
      ]
    }
  ],
  "multi": false,
  "has_readme": true
}
