Set up Push for a team
One person sets up Push on a Mac the team keeps running; everyone else asks in Slack. The operator's checklist, the teammate's paragraph, and what to do when a step stops.
One person sets up Push on a Mac the team keeps running. Everyone else asks in Slack. This page is that person's checklist, in order, with each step split into what you do and what Push does. The last section is for everyone else.
Setup is honest work, not a wizard. Expect an afternoon, including consent steps inside Slack that only an admin of your Slack workspace can take.
Choose the Mac
You do this. Pick an Apple Silicon Mac on macOS 26 that will stay on: a Mac on a desk, or a Mac mini you rent in your own cloud account. Install Push on it.
Keep the app open and the Mac awake. Push is an app, not a daemon: when the app is closed or the Mac is asleep, the workspace is unreachable and requests wait. Turn on Always On so the Mac does not sleep, and add Push to your Login Items yourself if you want it back after a restart. Push installs no login item of its own.
Push does this. Keeps the Mac awake while Always On is on. Updates itself
from a signed feed. push doctor checks the install: server, CLI, PATH,
runtimes.
Windows and Linux are not available. If your team cannot keep a Mac running, Push is not for you yet.
Sign in and own the workspace
You do this. Sign in on the Mac with Apple, Google or GitHub (Settings → Account). Slack is not a sign-in here; you link it later as an identity, so Push knows which Slack account is yours.
Push does this. The account that first signs in on this installation becomes the workspace's owner, automatically. There is one owner per workspace. The owner's own devices — iPhone, browser — are admitted when they sign in with the same account. Changing the configuration is always the owner's to do, on the Mac, and never happens through a request from Slack or the browser.
Prepare the agents
You do this. Sign in to Claude Code, Codex, OpenCode or Hermes on the Mac, in each runtime's own way, with the accounts your team already pays for. Add the folders the team will work in. Write project instructions, hooks, skills and MCP servers as you would for yourself; they are the environment every request runs in. Decide whether sessions run with Bypass Permissions or stop and ask.
Push does this. Detects the runtimes (Settings → Terminal), keeps the
/p skill current in each of them, and runs every request as a real session
of your agent, on your install and your login. Push ships no model and no
agent of its own. Your agents talk to their providers directly; nothing
passes through Push.
One dependency to know about: when a Slack request does not say which session it belongs to, Push asks a model which folder it should go to. That call uses Claude or your own OpenRouter key, and it can be turned off. When Push cannot tell where a request belongs, it asks the sender privately.
Connect Slack
You do this. Run push slack setup in a terminal on the Mac. It asks
for a Slack configuration token, which you create in Slack's app settings
and paste. Then finish in Slack:
- Approve Install to Workspace. If you are not an admin of the Slack workspace, the button says Request to Install and a Slack admin approves it.
- Turn on Socket Mode and copy the app-level token Slack issues.
- Copy the bot token.
- Paste both when Push asks. Push reads them from your clipboard, so they are never typed into the terminal. A token that was pasted into a terminal counts as exposed; regenerate it.
- Invite the bot to the channels your team will use.
Push does this. Creates the Slack app from its own manifest, uploads the logo, verifies the Slack workspace, the app and its scopes, and saves one connection per Slack workspace. Socket Mode means the Mac connects out to Slack; nothing on your Mac is exposed to the internet. One Push workspace can connect several Slack workspaces.
If Slack's answer is lost while the app is being created, Push does not retry
on its own. Check Your Apps in Slack: if the app is there, run
push slack setup again with that app's id to resume. A rejected scope or
credential can be retried, and what you already entered is kept. A rejected
icon leaves the logo pending and does not stop the setup.
Who may do what
You do this. Connect each Slack account to a Push person before Push acts on its messages. There are two ways:
- The account is a teammate's own. They link their Slack identity to their own Push account and hold their own role.
- The account acts as a member. You map it onto a member and lend that member's permissions. The Slack name stays on every message, so the record still says who asked.
Do not map everyone to the owner. It works, but every request then runs with the owner's permissions.
Then set permissions per person, per folder: file work, run work, view terminal, control terminal. Choose the channels the bot listens to, where a plain message is a request without a mention. Roles are offered to a teammate's exact account and accepted by them on their own device.
Push does this. push slack map connects one account, and can preview a
whole channel's people for you to approve. push slack listen adds a
listening channel. push workspace setup check reads a setup file kept in
your repo and names every change it would make, making none;
push workspace setup apply makes them. push audit export writes the
record of who acted, through which door, and what was refused.
The setup file cannot carry the Slack tokens; those stay steps on the host. Permissions are checked again for every message, so taking one away works immediately. An account you have not connected is told once — "Push can't act on this, because your Slack account isn't connected" — and its words are kept on the thread as context. Context never turns into an instruction later.
The first request
Your team does this. In a channel the bot was invited to, a connected teammate mentions the bot with one self-contained ask against one folder you prepared. A copy change in a web repo with "and open a PR" is a good first one.
Push does this. Acknowledges the message with a reaction or one short line. Picks the session it belongs to, or starts new work in a folder the sender may run in; when it cannot tell, it asks the sender privately. Opens a real terminal tab on the Mac and runs the agent there. Posts the answer in the thread, with any files the agent chose to share. A follow-up in the same thread continues the same session.
Keep the first day simple: one folder, self-contained asks, and Claude Code or OpenCode if you want permission prompts answered from Slack. What a teammate sees is on Push in Slack.
When something stops
- The Mac is asleep, offline, or Push is closed. Requests wait with their sender and are delivered when the Mac reconnects. In Slack the bot goes quiet. In the browser the computer's row says it is offline.
- "Push can't act on this, because your Slack account isn't connected." Map or link that account, then ask again. The earlier words are on the thread as context; nothing ran.
- Slack did not answer during setup. See Connect Slack above.
- A teammate's browser says "Update Push on the computer to open this workspace". The Mac runs an older Push than the browser needs. Push → Check for Updates… on the Mac.
- A reply you expected in Slack never came. When Push is not sure a
reply was delivered, it does not post it again.
push communication inspectshows where it stopped.
More in Troubleshooting.
If you were invited
You need nothing to ask in Slack: no install, no Push account, as long as the owner connected your Slack account. Mention the bot in a channel it is in, or write in a channel it listens to, and the answer comes back in the thread. Reply in the thread to continue.
What you see: a short acknowledgement, then the answer, with any files the agent shared. A private message only when Push had to ask where your request belongs, or when the agent asks for a permission on work you started. One explanation, once, if your Slack account is not connected yet. No receipts, links or "Completed" lines unless the owner turns them on.
A Push account is needed for more than Slack: to open the work board and terminals in the browser, to open a Push link someone shares, to use the iPhone app (a TestFlight beta), or to hold your own role rather than one lent to your Slack account. Open the link your operator sent and sign in.