dirless-syncer v0.5.3
dirless-syncer
Syncs users, groups, and memberships from AWS IAM Identity Center to the Dirless backend. Runs on customer infrastructure — the backend never reaches into your AWS account.
How it works
- Fetches temporary AWS credentials from EC2 IMDS (IMDSv2)
- Calls the Identity Store API to list users, groups, and memberships
- Acquires a sync lease from the Dirless backend (one syncer per tenant at a time)
- POSTs the sync payload to the backend over mTLS
- Renews the lease via heartbeat while the sync is in progress
- Sleeps until the next interval
Requirements
- Must run on an EC2 instance with an IAM role that has Identity Store read permissions
IAM permissions required
{
"Effect": "Allow",
"Action": [
"identitystore:ListUsers",
"identitystore:ListGroups",
"identitystore:ListGroupMemberships",
"sso:ListInstances"
],
"Resource": "*"
}
Installation
Option 1 — RPM (RHEL / Amazon Linux 2023)
curl -fsSL https://dirless.com/rpm/dirless.repo \
-o /etc/yum.repos.d/dirless.repo
dnf install -y dirless-syncer
Option 2 — Direct binary (Linux x86_64)
curl -fsSL https://github.com/dirless/dirless-syncer/releases/latest/download/dirless-syncer-x86_64 \
-o /usr/local/bin/dirless-syncer
chmod +x /usr/local/bin/dirless-syncer
Configuration
Copy the example config and fill in your values:
cp /usr/share/doc/dirless-syncer/dirless-syncer.example.toml /etc/dirless/dirless-syncer.toml
Or create /etc/dirless/dirless-syncer.toml manually:
[backend]
url = "https://yourname.dirless.com" # your Dirless subdomain
enrollment_token = "your-token-here" # from your portal dashboard
# [identity_center] # normally auto-detected — uncomment only to override
# identity_store_id = "d-1234567890"
# region = "us-east-1"
[syncer]
id = "syncer-01" # unique, stable name for this syncer instance
interval_seconds = 300 # sync every 5 minutes
On first start, the syncer uses enrollment_token to generate mTLS certificates and register with the backend automatically. The token can be removed from the config afterwards — the certificates handle authentication from that point on.
The config path can be overridden with the DIRLESS_SYNCER_CONFIG environment variable.
Running
# If installed via RPM (service file included):
systemctl enable --now dirless-syncer
# Or run directly:
dirless-syncer
Building from source
shards install
crystal build src/dirless_syncer.cr -o dirless-syncer --release
Testing
shards install
crystal spec
License
Apache 2.0 — see LICENSE.
Repository
dirless-syncer
Owner
Statistic
- 0
- 0
- 0
- 0
- 6
- about 5 hours ago
- March 6, 2026
License
Other
Links
Synced at
Sun, 17 May 2026 21:00:31 GMT
Languages