Security Practices
Document Version: 2.8 · Last Updated: November 6, 2026
ChenPo LLC (d/b/a CloudRepo) · security@cloudrepo.io
1. Executive Summary
CloudRepo is a cloud-native software artifact and package repository operated by ChenPo LLC (d/b/a CloudRepo), a US-based company headquartered in Fargo, North Dakota. Founded in 2016, CloudRepo has over 10 years of operational history serving development teams who need reliable, secure artifact management.
We are bootstrapped and independent: we took no venture capital, so we answer to our customers. We have no enterprise sales team and no reason to trade security for short-term growth. We build a high-quality product and sell it at fair, predictable prices.
No known security breaches in our history.
2. Infrastructure Security
CloudRepo's origin runs on Amazon Web Services in the US-West (N. California) region, behind a global content delivery network (CDN). One metadata table also replicates to two other US AWS regions. Artifacts stay in one region.
Compute and Networking
- Cloud-native architecture with multi-AZ redundancy
- All production infrastructure runs within AWS with managed services handling availability and redundancy
Storage
- Artifact storage: Amazon S3 with 99.999999999% (11 nines) durability. Versioning is enabled on all artifact buckets.
- Metadata and database: Amazon DynamoDB with automated backups and point-in-time recovery
Network Security
- DDoS protection: AWS Shield Standard provides baseline protection against common network and transport layer DDoS attacks, automatically, on the AWS services we use
- TLS: Every connection to CloudRepo uses TLS 1.2 or later
Data Residency
- All customer artifacts and account data are stored in the United States (AWS)
- Certain operational subprocessors process limited categories of data (including billing contacts, operational records, support conversations, email addresses, and error and session metadata) and may do so outside the United States; see our subprocessor list for the current set
3. Data Protection
Encryption at Rest
- All S3 objects are encrypted using AES-256 server-side encryption
- DynamoDB tables use encryption at rest
- Row-level encryption is not implemented. Data is protected by encryption at rest combined with strict access controls at the application and infrastructure layers.
Encryption in Transit
- Every connection to CloudRepo uses TLS 1.2 or later. Unencrypted HTTP connections are rejected or redirected.
Credential Storage
- All user passwords are hashed using PBKDF2 with BLAKE2b-512, 50,000 iterations, and a 12-byte random salt per credential
- Passwords, MFA secrets, the tokens and keys CloudRepo issues, and the upstream registry and SSO client secrets you configure are stored only as one-way hashes or encrypted with AWS KMS, never in plaintext
Data Classification
- Customer artifacts and associated metadata are treated as confidential
- System metrics and logs are treated as internal. Logs may contain user IDs for troubleshooting purposes.
4. Access Controls
Production Infrastructure
- AWS Console access requires multi-factor authentication (MFA) for all users
- Production access is limited to essential personnel only, following the principle of least privilege
- No shared credentials exist for any production system; all access uses individual accounts with MFA
Source Code
- All source code is hosted on GitHub with MFA required for all contributors
- Code changes require review before merging to production branches
Access Reviews
- Access to production systems and source code is reviewed regularly to ensure appropriateness
5. Authentication
User Authentication
- Username and password authentication
- Multi-factor authentication (MFA) is included on every plan. Members who sign in with a password can protect their account with a time-based one-time password (TOTP) from an authenticator app, and get ten single-use backup codes when they set it up.
- Password policy: 8 to 256 characters
Password Security
- Hashing algorithm: PBKDF2 with BLAKE2b-512
- Iterations: 50,000
- Salt: 12-byte random salt, unique per credential
Password Reset
- Token-based reset using UUID tokens
- Tokens expire after 2 hours and are single-use
- Reset links are sent only to the account owner's registered email address, and we store only a salted hash of the secret in each link
SCIM 2.0 Provisioning
- SCIM 2.0 provisioning from Okta and Microsoft Entra ID: included on every plan
- The organization owner connects it in the portal, once single sign-on is on
- Your identity provider adds and updates your members, and removing or deactivating someone there after SCIM is connected ends their CloudRepo access
Single Sign-On
- SSO (SAML and OIDC): included
6. Application Security
Development Practices
- Automated code analysis is integrated into the development workflow
- Pre-commit validation and testing gates are enforced in the CI/CD pipeline
- Code is tested before it reaches production
- Code review is required for all changes to production code
Vulnerability Management
- We recommend integrating automated vulnerability scanning tools such as Snyk or Trivy into your CI/CD pipelines
- Independent security researchers have reported potential vulnerabilities, which we triaged and addressed.
7. Incident Response
Contact
- Dedicated security contact: security@cloudrepo.io
- We respond to security reports within one business day
Track Record
- No known security breaches in our history.
Response Process
- Identification: Detect and confirm the security event
- Containment: Isolate affected systems to prevent further impact
- Eradication: Remove the root cause
- Recovery: Restore normal operations and verify integrity
- Post-incident review: Document lessons learned and implement improvements
Customer Notification
- Customers are notified without undue delay, and within 72 hours after we become aware of a breach, as our Data Processing Agreement provides.
8. Business Continuity & Disaster Recovery
Data Durability
- Artifact data is stored in Amazon S3 in a single AWS region (US-West-1) with 99.999999999% (11 nines) durability and object versioning for overwrite and deletion recovery within a 30-day window. Artifacts are not replicated to other regions.
- DynamoDB automated backups with point-in-time recovery protect metadata and configuration
Architecture Resilience
- Cloud-native architecture on AWS managed services with multi-AZ redundancy within our US-West region
Monitoring
- System health is monitored via Grafana Cloud with automated alerting on anomalies and threshold breaches
BCP/DR Plan
- We do not maintain a formal documented Business Continuity Plan or Disaster Recovery plan. Our cloud-native architecture on AWS managed services provides inherent resilience, and our operational procedures cover recovery scenarios.
9. Vendor Management & Subprocessors
All subprocessors are reviewed periodically for compliance and appropriateness.
| Subprocessor | Purpose | Data Processed | Compliance |
|---|---|---|---|
| Amazon Web Services (AWS) | Infrastructure, storage, compute | All customer data and artifacts | SOC 2, ISO 27001, FedRAMP |
| Braintree/PayPal | Payment processing | Billing information | PCI DSS Level 1, SOC 2 |
| GitHub | Source code management | Source code and operational tooling. Repository history retains billing records (customer names, email addresses, payment amounts) committed until October 2026; current billing records are kept outside the repository. The repository is private and its history is not rewritten. Customer organization identifiers appear in committed tooling. | SOC 2, ISO 27001 |
| Postmark | Transactional email | Email addresses, notification content | SOC 2 |
| Grafana Cloud | Monitoring and observability | System metrics and logs, including member email addresses and client IP addresses, kept for security and debugging | SOC 2 |
| PostHog | Product analytics and error tracking | Account information and email addresses (including those entered on signup forms before signup finishes), device, network, usage and error data, and session-recording data with credentials masked, used to run, support, debug and improve the service; on the website, also the name and website address of the company behind some earlier visits | SOC 2 |
| Intercom | Customer support | Support conversations, email | SOC 2 |
| Supabase | Billing and operational systems | Billing contacts, operational records | SOC 2 |
| Baserow (Cloud) | Billing and operational systems | Billing contacts, operational records | SOC 2 |
| Hookdeck Technologies Inc. | Managed webhook gateway | Organization ID and owner email address at signup | SOC 2 |
| Stripe | Invoice-based payment processing | Customer name and email address, invoice amounts and descriptions; card data is entered on Stripe's hosted page (not collected or stored by CloudRepo) | PCI DSS Level 1, SOC 2 |
| Google Workspace | Founder email and business operations | Copies of emails sent to customers (signup notices with organization ID, email address, IP address, user agent and referring page; welcome emails; receipts and payment reminders), customer replies and correspondence, server error alerts (the failing request with credentials removed, including the client IP address, and the error message), prospect correspondence | ISO 27001, ISO 27017, ISO 27018, SOC 2, SOC 3 |
| Intuit (QuickBooks Online) | Accounting and bookkeeping | Customer organization identifiers and company names, payment amounts and dates, plan line items, payment processor transaction references | See Intuit Security |
| Apollo.io | Website visitor identification | Pages visited on the website and documentation (full address and referring site), campaign tags, IP address, browser details and a browser ID | SOC 2, ISO 27001 |
| Calendly | Booking calls with the founder | The details a visitor types into the booking calendar on our /meet page, such as name and email address; IP address and browser details when the calendar loads | See Calendly Security |
| Cloudflare (Turnstile) | Bot check on the signup page | IP address, browser details (user agent and TLS fingerprint) and the site the check runs on, when the signup page loads the check; our servers also send Cloudflare the check token and the IP address to verify it | See Cloudflare Compliance Resources |
The full subprocessor list is also published at cloudrepo.io/subprocessors.
10. Data Privacy
GDPR
- Data deletion requests are processed within 30 calendar days of a verified request. Deletion is an operator-run procedure covering artifacts and repository content in S3. Account and identity records (organization, users, credentials, API tokens, SSO configuration) and repository metadata rows are retained, and prior copies remain recoverable from S3 object versioning and DynamoDB point-in-time recovery for their retention window. Cancelling a subscription does not by itself delete data
- Customers can delete any repository and its contents themselves, at any time, through the portal or the API
- We collect email addresses where we need them, including on signup forms before signup finishes, and use them, with account information and usage, error and session-recording data, to run, support, debug and improve the service
- Download our Data Processing Agreement from the Trust Center. For a countersigned copy, email security@cloudrepo.io.
CCPA
- California residents can exercise their CCPA access, deletion, and do-not-sell rights by contacting privacy@cloudrepo.io. We do not sell personal information. Deletion requests are handled by the same operator-run procedure described above, with the same scope and retention exclusions
General Commitments
- We do not sell customer data to third parties
- Customer data (artifacts and repository contents) is used solely to run, support, debug and improve the CloudRepo service
11. Compliance Roadmap
CloudRepo does not currently hold formal security certifications such as SOC 2 or ISO 27001. We believe in transparency about where we are and where we are headed.
Ongoing
- Continued investment in security infrastructure and operational practices
- Periodic review of all subprocessor compliance status
- Regular evaluation of certification options
We evaluate certification options periodically. For now, certification costs are out of proportion to our size, so we focus on strong security practices and publishing them openly.
12. Document Revision History
| Version | Date | Description |
|---|---|---|
| 1.0 | March 9, 2026 | Initial release |
| 1.1 | September 18, 2026 | PostHog replaces the two previous analytics subprocessors |
| 1.2 | October 7, 2026 | Workflow automation subprocessor removed |
| 1.3 | October 14, 2026 | Hookdeck added as a subprocessor. DPA 5.2: we announce subprocessor changes by updating the public list (replacing the 30-day email notice). DPA 5.3: the objection window starts when a subprocessor is added to that list. |
| 1.4 | October 14, 2026 | Stripe, Google Workspace and Intuit (QuickBooks Online) added as subprocessors; the GitHub row now discloses the billing records in repository history |
| 1.5 | October 20, 2026 | The PostHog row and section 10 state what we collect and how we use it |
| 1.6 | October 21, 2026 | Apollo.io added as a subprocessor (website visitor identification) |
| 1.7 | October 21, 2026 | LiveIntent added as a subprocessor (loaded by Apollo.io's tracker) |
| 1.8 | October 21, 2026 | Snitcher added as a subprocessor (website visitor identification, through our servers); DPA Annex B lists LiveIntent as receiving data for its own purposes |
| 1.9 | October 26, 2026 | Credential storage names multi-factor authentication secrets (Oct 22); the data-use section and the PostHog row were reworded (Oct 22); single sign-on (SAML and OIDC) listed as included, and SCIM provisioning listed on its own line (Oct 25); the executive summary's funding sentence now says we took no venture capital (Oct 26) |
| 2.0 | October 27, 2026 | PostHog stores the name and website address of the visiting company Snitcher identifies on the website (the PostHog and Snitcher rows) |
| 2.1 | October 27, 2026 | The breach statement is one sentence, in section 1 and Track Record |
| 2.2 | October 27, 2026 | Track Record states the breach statement only |
| 2.3 | October 31, 2026 | The breach statement (section 1 and Track Record) is reworded |
| 2.4 | October 31, 2026 | Plainer wording in sections 1, 6, 10 and 11, and in the 1.3 row above |
| 2.5 | November 1, 2026 | LiveIntent removed as a subprocessor: our website and documentation no longer load it |
| 2.6 | November 1, 2026 | Section 2 says where the service runs and that one metadata table is replicated, and its data residency bullet says the United States and AWS; section 5 adds MFA on every plan; sections 6, 7, 9 and 11 reword the vulnerability reports, the breach notice and the subprocessor review; Calendly and Cloudflare (Turnstile) added to the list |
| 2.7 | November 6, 2026 | Section 5 says SCIM provisioning from Okta and Microsoft Entra ID is included on every plan, and what it does |
| 2.8 | November 6, 2026 | Snitcher removed from the subprocessor list; the PostHog row no longer names it |
A downloadable version of this document is available at security-practices.md.