Read-Only by Default
Customers can download but never modify or delete your release artifacts. A single configuration line enforces read-only access across all protocols.
Deliver release builds, patches, and license files to 500+ enterprise customers — with per-customer quotas, multi-protocol access, and CRM integration.
Your build pipeline produces installers, patches, and license keys every sprint. But getting those artifacts to 500+ enterprise customers securely is a different challenge entirely.
Email attachments hit size limits. Cloud storage links expire and lack audit trails. FTP servers require per-customer credential management that nobody wants to maintain.
Customers demand protocol choice — some have locked-down networks that only allow SFTP on port 22. Others want browser access. A few need mapped drives via WebDAV for automated downstream processing.
And when a customer downloads a release, your CRM has no idea. Sales can't follow up. Support can't verify which version a customer is running.
✗ Email: 25 MB limit, no audit trail
✗ Cloud links: expire, no protocol choice
✗ Manual FTP: credential sprawl
✗ No download visibility for CRM
✗ No per-customer quotas
✗ Different tools for each protocol
Stylus SFTP Server gives each customer a read-only home directory accessible via SFTP, FTPS, or WebDAV. Your build system uploads releases through the Portal REST API. A webhook notifies your CRM the moment a customer downloads.
Your build pipeline uploads via the Portal REST API. Customers download via their preferred protocol. Every download fires a webhook to your CRM.
Read-only customer accounts, per-customer quotas, webhook notifications, and JDBC auth — all from XML configuration.
<filesystem
xmlns="http://www.xmlpipelineserver.com/sftp/">
<home-root>${STYLUS_SFTPSERVER_DATA}/homes/${username}</home-root>
<default-access>read-only</default-access>
<!-- Per-customer download quotas -->
<quotas>
<default-quota>5GB</default-quota>
</quotas>
</filesystem>
<user-manager>
<provider>jdbc</provider>
<jdbc>
<url>jdbc:h2:${STYLUS_SFTPSERVER_DATA}/db/sftpdb;AUTO_SERVER=TRUE;CIPHER=AES</url>
</jdbc>
</user-manager>
<!-- Webhook fires on every DOWNLOAD event -->
<audit>
<webhooks>
<webhook>
<url>https://crm.example.com/api/sftp-hook</url>
<events>DOWNLOAD</events>
<hmac-secret>${WEBHOOK_SECRET}</hmac-secret>
</webhook>
</webhooks>
</audit>
# Upload a release build to customer acme-corp's home directory
curl -X POST https://sss.example.com:9443/portal/api/files/upload \
-H "Authorization: Bearer ${BUILD_TOKEN}" \
-F "path=/acme-corp/" \
-F "file=@build/release-v3.2.1.zip"
# Customer downloads via SFTP (read-only)
sftp acme-corp@sss.example.com
sftp> get release-v3.2.1.zip
Fetching /release-v3.2.1.zip ... done
Customers can download but never modify or delete your release artifacts. A single configuration line enforces read-only access across all protocols.
Customers connect via SFTP, FTPS, WebDAV, or the browser portal — whatever their network policy allows. One server, one set of credentials, five protocols.
Webhook notifications fire the instant a customer downloads a file. Your CRM knows which customers are on the latest release — without asking.
Prevent bandwidth abuse with per-user disk quotas. Each customer gets a dedicated home directory with enforced storage limits across all access protocols.