Organizations & Licensing

Create or join an organization to share licensing and visibility with your team, and understand how license resolution and per-machine device caps work.

Overview

The 3xcode org command group lets you create or join an organization to share licensing and visibility with teammates. Running bare 3xcode org with no subcommand defaults to org me, showing your current membership.

Shareable join codes

Creating an organization returns a short org code you can hand to teammates: no invite emails or admin console required to get someone added.

Hybrid licensing

Individual, per-account licenses remain the default for everyone. An organization can additionally be provisioned a shared license by an admin, layered on top rather than replacing individual licenses.

Creating an Organization

3xcode org create creates a new organization and joins it immediately as its first member. If you don't pass --name, the CLI prompts for one interactively.

Terminal
$ 3xcode org create --name "Acme Data Platform"

Creating organization "Acme Data Platform"...
✓ Organization created
  Name:      Acme Data Platform
  Org code:  ACME-7QK2

Share this code with teammates so they can join:
  3xcode org join ACME-7QK2

The org_code printed on success is the value teammates pass to 3xcode org join. Share it however's convenient (chat, email, an internal wiki page). There's no separate invite flow to manage.

Joining an Organization

3xcode org join <code> joins the organization identified by a code someone shared with you.

Terminal
$ 3xcode org join ACME-7QK2

Joining organization...
✓ Joined "Acme Data Platform"
  Members: 4

org create

Creates a new org, joins it as the first member, and prints a shareable join code. Prompts for a name if --name is omitted.

org join <code>

Joins an existing org by its code. Prints the org's name and current member count on success; an unrecognized code returns a clear not-found error.

Checking Your Membership

3xcode org me shows the organization you belong to, which is also what runs when you type bare 3xcode org with no subcommand.

org me output

FieldWhat it shows
Name & codeThe organization's display name and its join code.
Your roleYour role within the organization.
Member / seat countHow many teammates have joined.
Shared licenseWhether the org has an admin-provisioned shared license, and if so its usage mode: `Per-seat` or `Shared pool`.

If you're not currently in an organization, org me prints a hint to run org create to start one or org join <code> to join an existing one. 3xcode profile also surfaces your organization detail (name, code, role, and seats) alongside your individual account info.

Hybrid Licensing Model

Licensing in 3XCode is hybrid, not either/or. Every account keeps its own individual license by default. This is what governs your account whether or not you ever join an organization. Joining or creating an org doesn't take that away.

On top of that, an organization can optionally be given a shared license, provisioned by an admin. When a shared license exists, license resolution at conversion time works org-first, individual-fallback:

1. Org license checked first

If you belong to an org with an active shared license, conversions draw against that shared license: either per-seat or from a shared pool, depending on how the admin configured it.

2. Individual license as fallback

If there's no org, no shared license, or the shared license is exhausted/invalid, the CLI falls back to your own individual license, the same one that governs a solo account.

org me tells you which mode a shared license is running in: Per-seat (each member draws from their own allotment within the org license) or Shared pool (all members draw from one combined pool). Either way, license state (validity, tier, conversions remaining, expiry) is checked at the start of every conversion, so a monthly limit hit anywhere in the resolution chain surfaces immediately with a clear reason.

Machine Binding & Device Caps

License validation is bound to a stable machine fingerprint (derived from your machine's hostname, CPU architecture, and OS, one-way hashed) sent automatically on every authenticated request. This is invisible in normal use: there's no prompt or consent screen, it just lets the backend enforce how many distinct machines a license can be active on at once. The fingerprint deliberately excludes the MAC address: on some OSes (macOS included) the underlying lookup can return an unstable, per-process value, which would otherwise make a background worker compute a different fingerprint than the interactive process that spawned it.

Per-tier machine caps

TierMachines per license
Free1
Pro2
Team10
Enterprise999

Individual licenses: capped

An individual license is limited to the machine count for its tier. Logging in and converting from more machines than your tier allows will hit the cap.

Org-shared licenses: exempt

A shared license provisioned for an organization is exempt from the per-machine cap by design: it's meant to be used across many teammates' machines at once.

The fingerprint is persisted locally so it stays consistent across reboots and across processes on the same machine, including a detached background worker started with pyspark convert --detach, which needs to agree with the interactive CLI process it was spawned from. Only the hashed fingerprint and CLI version travel over the network; the raw hostname, architecture, and OS values never leave your machine.

Troubleshooting

"No organization found with code ..." on org join

The code doesn't match any existing organization. Double-check it with whoever shared it for typos, and confirm they ran org create successfully first.

org me says you're not in an organization

You haven't created or joined one yet. Run 3xcode org create --name "..." to start a new org, or 3xcode org join <code> if a teammate already shared a code with you.

Hit the machine cap on an individual license

Your tier's per-license machine count (Free=1, Pro=2, Team=10, Enterprise=999) has been reached. Either stop using an older machine before adding a new one, upgrade your tier, or, if you're part of a team, ask your admin about a shared org license, which is exempt from the per-machine cap.

Not sure whether a conversion used your org's license or your own

Run 3xcode org me to see whether your org has a shared license and its usage mode (Per-seat vs Shared pool). Resolution is always org-first, individual-fallback, so if a shared license is active and valid, that's what conversions draw against.