Teams and access rules

A teammate who needs to tail a log does not need a root shell. Access in Paperboat is a short file of rules, and one command tells you what any rule lets anyone do.

$ pb policy explain --src user:bo@example.test --dst machine:db --action private_access --port 5432
ALLOWED: rule
Rules: /rules/2
$ pb policy explain --dst machine:db --action exec
  1. 1

    Ask why someone can, or cannot, do something. The answer names the rule.

  2. 2

    Or ask who can run commands on a machine.

The whole policy is one file

Group people, tag machines, allow or deny. A deny always wins, and the owner can never lock themselves out.

pb policy set shows whose access would change before saving, and every save can be restored. The console edits the same file as a grid.

policy.hujson
{
  // Reaching ports is off for a team until you turn it on.
  "allow_private_access": true,
  "groups": {
    "group:ops": ["user:ana@example.test", "user:bo@example.test"]
  },
  "tags": { "tag:prod": ["machine:db", "machine:web-01"] },
  "rules": [
    // Ops can do everything on production.
    { "src": ["group:ops"], "dst": ["tag:prod"], "allow": ["*"] },
    // Nobody opens an SSH session there, ops included.
    { "src": ["*"], "dst": ["tag:prod"], "deny": ["managed_ssh"] },
    // Every member may reach the database port, and only it.
    { "src": ["role:member"], "dst": ["machine:db"],
      "allow": ["private_access"], "ports": [5432] }
  ]
}

Permissions

Each is granted per machine or per tag. ENV has its own two, for reading and for changing a team's values.

terminalOpen and attach to terminal sessions
execRun single commands
managed_sshSSH, scp, sftp and rsync
filesSend files to the machine's Inbox
preview_manageStart and stop previews from the machine
tunnel_manageCreate and change tunnels on the machine
private_accessReach its ports, optionally only listed ones

Roles

Roles are about administration only. Using machines is always the policy's decision.

OwnerOne person. Can delete the team or transfer it.
AdminMembers, machines, policy, security settings and the audit log.
BillingPlan, seats, extra bandwidth and invoices. Nothing else.
AuditorReads everything an admin sees, and exports the audit log. Changes nothing.
MemberUses what the policy grants.

API tokens

An API token acts as the person who made it, narrowed to the scope you give it, until it expires. If its creator loses access, so does the token.

Use one in CI or hand one to an agent. The secret is shown once.

$ pb api-token create ci --expires 30d --scope '[{"dst":["tag:ci"],"allow":["exec"]}]'
$ pb machine tag build-01 add ci
$ pb api-token list
$ pb api-token revoke ci
  1. 1

    Thirty days, exec only, only on machines tagged ci.

  2. 2

    Tagging is a reviewed policy change, like any other.

Business features

All of it is part of the Team plan at $15 a seat. Single sign-on and directory sync need a team of at least 10 seats.

Single sign-on

SAML or OpenID Connect with a verified domain. Turn on Require SSO after reviewing who would lose access; the owner stays as the break-glass account.

Directory sync

People added to or removed from your directory are added to or removed from the team, with roles mapped from directory groups.

Audit log

Search by person, action, target and result. Export as CSV or JSON, or stream it, signed, to an HTTPS endpoint or S3-compatible storage.

Session recordings

Record Paperboat terminals by rule or by hand. Recordings are encrypted and archived to your own S3-compatible bucket; every replay is audited.

Machine approval

A team can hold a member's newly shared machine until an owner or admin accepts it.

Team secrets

A team has its own ENV scope with its own keys. Rules decide who reads and who writes.

Questions

Does joining a team give someone access to my machines?

No. Membership grants nothing by itself. A machine is shared with a team on purpose, and each person's access to it is a rule you can read.

Do I need the Team plan for tags, the policy file and API tokens?

No. They work in a personal workspace on Free and Pro, for example to give a CI token nothing but exec on machines tagged ci. Team adds members, roles and audit log export, and single sign-on and directory sync from 10 seats.

What happens when someone leaves?

Remove them, or let directory sync do it when they are removed from your identity provider. Their open sessions end at once, their team API tokens are revoked, and machines they shared leave the team.

Which identity providers work for single sign-on?

Any SAML or OpenID Connect provider, including Okta, Microsoft Entra ID and Google Workspace. Your IT admin sets it up in a guided portal, and you can then require SSO for the whole team. It is available to teams with 10 or more seats.

What does the audit log record?

Who did what to which machine or setting, whether it was allowed, and from where. Never terminal contents, file contents or secrets. It is kept 30 days on Free, 90 days on Pro and 365 days on Team, where you can also export it or stream it to your own storage.

How is a team billed?

$15 per seat a month, or $150 a year. Every member takes a seat whatever their role. Seats added mid-cycle are charged right away, and the billing date does not move.

Start with the machine in front of you

Install Paperboat here, then on a second machine. Free for personal use, no card needed.

$ curl -fsSL https://get.pprbt.dev/install | bash
> irm https://get.pprbt.dev/install.ps1 | iex