Accession is the category-defining identity provisioning engine. Create, configure, and govern user lifecycles with a single deterministic operation. Zero drift. Zero ambiguity. Every identity, provisioned right.
$ accession -m -s /bin/bash -G dev,docker -c "Jun Chen" jchen
Accession exposes a complete provisioning surface for user lifecycle management. Each capability maps to a discrete, auditable operation with predictable outcomes.
Automatically provision isolated filesystem environments for each identity. One flag triggers complete home directory scaffolding with inherited skeleton templates.
-m / --create-home
Assign deterministic login shell paths at provisioning time. Full control over the initial interactive environment with no post-hoc configuration required.
-s SHELL
Associate a single identity with multiple supplementary groups in one atomic operation. Comma-delimited group membership, resolved and committed transactionally.
-G GROUP1,GROUP2,...
Assign specific numeric identifiers to guarantee reproducible provisioning across environments. Eliminate UID drift between staging and production.
-u UID
Set account expiration dates at provisioning time. Time-bounded identities for contractors, interns, and project-scoped access — built into the identity primitive itself.
-e YYYY-MM-DD
Define custom skeleton directories that seed every new environment with org-standard configs, dotfiles, and toolchains. Inherit from any template path.
-k SKEL_DIR
Embed GECOS-compliant metadata — full names, team designations, contact details — directly into the identity record at the moment of creation.
-c COMMENT
Provision system-level accounts with UID ranges allocated from the reserved system namespace. Purpose-built for daemons, services, and infrastructure agents.
-r / --system
Every provisioning operation proceeds through a deterministic pipeline. Each stage is observable, auditable, and idempotent.
Input flags are parsed, validated against schema, and merged with system defaults from the configuration layer.
A unique numeric identifier is deterministically assigned from the configured range (UID_MIN–UID_MAX) or the explicit value supplied.
Primary group is created or resolved. Supplementary group memberships are validated and committed atomically.
Home directory is created, skeleton templates are propagated, permissions and SELinux Context are applied.
Identity is committed to /etc/passwd, shadow records initialized, subuid/subgid allocated. The identity is now live.
We re-derived identity management from the ground up. No abstraction layers. No YAML. One deterministic command, infinite composition.
Specify the login name, metadata, UID, and group affiliations. Each parameter is a discrete, composable primitive that can be specified or deferred to intelligent defaults.
Set the home directory path, login shell, skeleton template, and filesystem permissions. Accession propagates your organizational defaults automatically.
Apply temporal bounds — expiration dates, dormancy periods, password aging policies. Every identity has a lifecycle. Accession makes that lifecycle explicit.
One invocation. The identity materializes across all system registries — passwd, shadow, group, subuid — in a single atomic transaction. No partial states. No drift.
Accession's Default Inspector reveals the system configuration that governs every identity operation. Transparency is a feature, not a bug.
Configure identity parameters visually. Accession compiles your selections into a single deterministic provisioning invocation.
$ accession -m -c "Jun Chen" -s /bin/bash -G dev,docker jchen
Start provisioning identities immediately. Upgrade as your identity surface area grows.
For individual operators exploring deterministic identity provisioning.
Full provisioning surface for growing infrastructure teams.
Mission-critical identity governance for platform teams.
For organizations provisioning at planetary scale with compliance requirements.
Every system is, at its foundation, a graph of identities and the permissions surfaces they occupy. Yet for decades, the act of creating an identity — the single most consequential operation in any computing environment — has been treated as an afterthought. A side effect of some larger workflow. An API call buried in a provisioning script that nobody audits and everyone assumes works.
We built Accession because we believe identity provisioning deserves the same rigor as database migrations, the same observability as network traffic, and the same determinism as cryptographic operations. An identity created with ambiguous defaults is a security incident waiting to happen. An identity created without lifecycle constraints is technical debt that compounds silently. Every identity parameter that is left unspecified is a decision deferred — and deferred decisions, in infrastructure, become incidents.
Accession makes every identity primitive explicit, every default inspectable, and every provisioning operation atomic and auditable. This is not incremental improvement. This is a category redefinition. Identity provisioning is not a feature. It is the feature.
Accession's UID allocation engine automatically selects the smallest available identifier greater than or equal to UID_MIN (default: 1000) and greater than every existing user's UID. This guarantees monotonically increasing, collision-free allocation without manual intervention. For deterministic, reproducible deployments, we recommend specifying UIDs explicitly with the -u parameter.
Yes. By default, Accession does not create a home directory unless the -m flag is explicitly provided. For cases where system-wide defaults would trigger home directory creation, you can explicitly suppress it with the -M (no-create-home) flag. This is particularly useful for service accounts and ephemeral identities that don't require persistent filesystem state.
The -e (expiredate) parameter accepts a date in YYYY-MM-DD format and sets the point at which the identity is automatically disabled. Combined with -f (inactive), you can define a grace period in days after password expiry before the account locks. Together, these parameters give you complete temporal lifecycle governance at the provisioning layer — no external cron jobs or cleanup scripts required.
Accession is built for infrastructure-grade throughput. Our enterprise customers provision tens of thousands of identities per deployment cycle. The -K (key override) flag allows you to dynamically configure system parameters like UID_MIN, UID_MAX, PASS_MAX_DAYS, and UMASK on a per-invocation basis, enabling multi-tenant provisioning from a single control plane.
By default, Accession enforces UID uniqueness as a safety invariant. However, for advanced use cases — such as aliased service identities or legacy migration scenarios — the -o (non-unique) flag allows multiple login names to map to the same numeric identifier. This is an Infrastructure-tier feature and requires explicit opt-in due to its implications for permission surface overlap.