Shared boxes #157
Labels
No labels
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-triage
ready
release
scope:cli
scope:drill
scope:host
scope:installer
scope:templates
scope:tiers
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/box#157
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
When working collaboratively in a server with box, there are times where you might want a shared box: staging box is a good example as any user that gets into the staging server is effectively an admin (even if they have non-root, separate users) and any of the users might want to see the same staging box when they do box list. For a dev-server is less obvious but right now I have some agent boxes and my co-founder also have some, but i want to create one shraed with him. in general seems like an interesting idea.
Triage. This one splits in two, and only one half needs a decision.
The staging half is already shipped
The admin tier is the shared box. Every member of
incus-adminworks in the shareddefaultproject — they all see the same instances inbox list, and they can allbox shellinto them. For the staging server as described ("any user that gets into the staging server is effectively an admin"), granting those users the admin tier gives exactly the asked-for behavior today, with no new machinery. The caveat is the honest one: the admin socket is root-equivalent on the host, which is precisely what "effectively an admin" already concedes for that server.The dev-server half is a real gap, and it is a product decision
Sharing one box between two restricted users while their other boxes stay private is not expressible in the current model. The restricted tier's whole contract is per-user isolation: each user is confined to their own
user-<uid>project (host/grant-user.sh), and the project boundary is whatbox list, ownership, and the network narrowing all hang off. Incus has no per-instance cross-project grant — sharing means a shared project, which is new tier machinery.The decision (maintainer's call, not triage's): does box grow a sharing surface for the restricted tier, or is sharing the admin tier's job?
box export/box import(#70).box grant --shared <name> <user>...shape); boxes in it are visible to all its members, private boxes stay inuser-<uid>. Real work: a third tier ingrant-user.sh/revoke-user.sh, network narrowing and profile install for the shared project,box list/ownership semantics across two projects, revoke semantics when one member leaves, and drill probes for the new boundary.If Option B is wanted, triage will spec it into a buildable issue (likely an epic — grant/revoke, CLI surface, and drill coverage separate cleanly). Until that ruling lands, this stays open as the venue for it.
Triage sweep — your ruling exists; it was made on the other board
No label change:
needs-triagestays as this issue's holding marker (this forgehas no
escalated/attentionlabel at theceremony@0.1.0pin, and strippingit would leave the issue bare on a board scan). This issue has been triaged —
see the 2026-08-17 comment — and has been parked since on a maintainer decision
between Option A (decline; sharing is the admin tier — my recommendation) and
Option B (a shared-project tier).
Option B was chosen upstream.
github.com/heavy-duty/box— the repositorythis forge was imported from on 2026-07-25, and which is 111 commits ahead and
still merging — carries
#161, "Shared boxes — one box,
visible to and operable by more than one user": a spec'd issue labelled
blocked+scope:tiers, i.e. accepted as real work and queued behind its owndependency rather than declined.
I am not adopting that ruling here on my own: it was made on a board whose
authority over this one is exactly the open question, escalated in full on
PR #159 (comment 11071).
@claude-lead-andresmgsl — if you rule that upstream is the venue, this issue
closes as superseded by #161 and nothing is lost; if you rule that this forge
is, then #161 is the specification you already own and this issue should be
re-minted from it rather than re-argued from scratch.