Our Security Promise
ULPI.io treats your documentation like the sensitive intellectual property it is. We implement multiple layers of security to ensure:- ✅ Your docs are never visible to other tenants
- ✅ API keys are encrypted and securely stored
- ✅ All communication is encrypted in transit
- ✅ Data is encrypted at rest
- ✅ You can delete your data at any time
Tenant Isolation
What is a Tenant?
A tenant is your organization’s isolated environment in ULPI. When you sign up, we create a tenant that contains:- Your repositories
- Your documentation
- Your API keys
- Your team members
- Your usage data
How Isolation Works
Separate Collections
Each tenant gets a dedicated Typesense collection. Your documentation is physically separated from other users’ data.
Database Filtering
Every database query automatically includes your tenant ID. It’s impossible to accidentally query another tenant’s data.
API Key Scoping
API keys are tied to exactly one tenant. A key can only access that tenant’s documentation - no exceptions.
Technical Implementation
For Technical Users: We use Laravel’s Global Scopes to automatically filter all queries by tenant ID. This prevents accidental cross-tenant access even if we write buggy code.
API Key Security
How Keys Are Stored
- Generation: Keys are generated using cryptographically secure random bytes
- Hashing: Full key is hashed with bcrypt before storage
- Storage: Only the hash is stored, never the plaintext key
- Display: Full key is shown once during creation, then never again
Key Validation
When you use an API key:Key Scopes
Scopes limit what an API key can do:| Scope | Permissions |
|---|---|
mcp:search | Search documentation |
mcp:get_doc | Retrieve full documents |
mcp:list_repos | List repositories |
repo:read | Read repository metadata |
repo:write | Modify repository settings |
Data Encryption
In Transit
All communication with ULPI is encrypted:- HTTPS/TLS 1.3 for all API endpoints
- Strong cipher suites only (no weak encryption)
- HSTS headers to prevent downgrade attacks
- Certificate pinning for mobile apps (coming soon)
At Rest
Your data is encrypted when stored:- Database: AES-256 encryption for sensitive fields
- File storage: S3 server-side encryption
- Backups: Encrypted before upload
- Logs: Sanitized to remove sensitive data
Authentication
OAuth 2.0
When you sign up with Google or GitHub:- We never see your password
- We only request minimal permissions
- You can revoke access anytime
- OAuth tokens are encrypted in our database
Sanctum Sessions
Frontend API authentication uses Laravel Sanctum:- HTTP-only cookies (safe from XSS)
- CSRF protection on all mutations
- Session expiration after inactivity
- Device-specific tokens
Rate Limiting
To protect against abuse, ULPI enforces rate limits:| Tier | Rate Limit | Burst |
|---|---|---|
| Free | 10 req/min | 20 req |
| Pro | 100 req/min | 200 req |
| Enterprise | Custom | Custom |
Audit Logging
Every MCP request is logged:- Monitor API key usage
- Detect suspicious activity
- Debug integration issues
- Track token consumption
Data Privacy
What We Collect
We do collect:- Documentation content (to index and search)
- Repository metadata (names, URLs, branches)
- Usage statistics (search queries, API calls)
- Account information (email, name from OAuth)
- Passwords (we use OAuth only)
- Credit card numbers (handled by Stripe)
- Private keys or credentials from your repos
- Personal data from your documentation
Data Retention
| Data Type | Retention |
|---|---|
| Documentation | Until you delete the repository |
| API keys | Until you revoke them |
| Usage logs | 90 days |
| Account data | Until you delete your account |
| Backups | 30 days |
Data Deletion
You own your data and can delete it anytime:Compliance
ULPI.io is committed to regulatory compliance:GDPR Compliant
Full compliance with EU data protection regulations
CCPA Compliant
California Consumer Privacy Act compliance
SOC 2 Type II
In progress - Expected Q2 2025
ISO 27001
In progress - Expected Q3 2025
GDPR Rights
Under GDPR, you have the right to:- Access your data (export from dashboard)
- Rectify incorrect data (edit in dashboard)
- Erase your data (delete account)
- Port your data (API export available)
- Object to processing (opt-out of analytics)
Security Best Practices
For Users
Protect Your API Keys
Protect Your API Keys
- Never commit keys to Git
- Don’t share keys in Slack/Discord
- Use environment variables
- Rotate keys every 90 days
- Use separate keys per environment
Use Restricted Tokens
Use Restricted Tokens
- Always choose “Restricted” token type
- Only enable required scopes
- Set expiration dates
- Review key usage regularly
Monitor Usage
Monitor Usage
- Check “Last Used” timestamps
- Review usage logs for anomalies
- Set up billing alerts
- Revoke unused keys
Secure Your Account
Secure Your Account
- Use strong OAuth password
- Enable 2FA on GitHub/Google
- Review authorized applications
- Use unique email per service
For Organizations
Access Control
Access Control
- Create separate tenants per team
- Use role-based access (coming soon)
- Implement key rotation policy
- Audit key access quarterly
Network Security
Network Security
- Whitelist ULPI IPs if possible
- Use VPN for sensitive work
- Monitor network traffic
- Implement DLP policies
Documentation Hygiene
Documentation Hygiene
- Don’t commit secrets to docs
- Use
.ulpiignorefor sensitive files - Review indexed content regularly
- Redact before indexing
Vulnerability Disclosure
Found a security issue? We appreciate responsible disclosure.Reporting Process
- Email security@ulpi.io with details
- Do not publicly disclose until we’ve patched
- Include steps to reproduce
- Wait for our response (within 48 hours)
Bounty Program
We offer rewards for valid security vulnerabilities:- Critical: 2,000
- High: 500
- Medium: 250
- Low: 100
Infrastructure Security
Cloud Providers
ULPI uses enterprise-grade infrastructure:- Primary: AWS (us-east-1, eu-west-1)
- Database: AWS RDS with encryption
- Search: Typesense Cloud with isolation
- CDN: CloudFlare with DDoS protection
Network Security
- DDoS mitigation via CloudFlare
- Web Application Firewall (WAF)
- IP-based rate limiting
- Automated threat detection
Operational Security
- 24/7 monitoring with PagerDuty
- Automated security patching
- Regular penetration testing
- Incident response plan