Information Security Policy
Effective Date: February 1, 2025 · Last Updated: February 19, 2026
Servo maintains a documented, operationalized information security program. This policy describes the controls, practices, and technical safeguards that govern how we identify, mitigate, and monitor security risks across our platform.
1. Scope and Applicability
This Information Security Policy applies to all systems, personnel, data, and processes that support the Servo platform — including the application infrastructure, cloud environments, third-party integrations, and any personnel with access to customer data.
Servo is an AI-native ERP platform serving field service companies. Our security program is designed to protect customer data, maintain system availability, and ensure the confidentiality and integrity of all information we process on behalf of our clients.
2. Authentication and Access Control
Access to the Servo platform is controlled through a layered authentication and authorization model designed to ensure that only authorized users can access the data and functions appropriate to their role.
Identity Provider and Session Authentication
Servo uses WorkOS as our identity provider. All user sessions are authenticated through industry-standard OAuth 2.0 / OIDC flows. We do not store user passwords — password management is delegated entirely to WorkOS and the identity providers it supports (SSO, social login, etc.).
Token Lifecycle
Sessions are granted via short-lived signed tokens. Revoking a session takes effect immediately. Tokens are transmitted exclusively over HTTPS.
Capability Links
For certain invitation and onboarding flows, Servo issues short-lived, single-use capability links. These are high-entropy tokens that grant access by virtue of being functionally unguessable — not by requiring a password. They grant narrowly scoped access and are invalidated immediately upon use.
API Key Authentication
API keys issued to customers are scoped, logged, and tied to the requesting identity in the audit trail.
Tiered Authorization Model
Every route in the Servo API is assigned an explicit authorization level. The tiers are:
- Public — No authentication required (health checks, webhooks)
- Capability Link — High-entropy single-use access, narrowly scoped
- Full Auth — Standard session token, required for all customer-facing routes
- Platform Admin — Elevated internal access, cross-tenant operations
- Blocked — Deprecated or unsafe routes explicitly denied
Authorization is enforced uniformly across all routes — there are no per-handler exceptions.
3. Tenant Data Isolation
Servo is a multi-tenant platform. Every record is bound to a specific customer organization, ensuring complete logical separation of customer data.
Enforcement at Every Layer
Tenant identity is derived exclusively from the authenticated session — clients cannot supply or override it. All database queries automatically enforce tenant scope, making cross-tenant data leakage structurally impossible at the application layer.
Cross-Tenant Access Controls
Cross-tenant operations are restricted exclusively to Servo platform administrators with elevated internal permissions. Any cross-tenant access is validated, explicitly flagged, and captured in the audit log. No customer user can access another tenant's data.
4. Encryption
Data in Transit
All communication between clients and the Servo platform is encrypted using TLS. HTTPS is enforced at the network edge before traffic reaches the application. Internal service communication is isolated by network controls. Database connections are encrypted in transit.
Data at Rest
Sensitive third-party API credentials and connection keys stored in the database are encrypted at rest using AES-256. Database volumes and S3 buckets are encrypted using AWS-managed encryption at rest. No plaintext credentials are stored in application data.
Secret Management
All application secrets — database credentials, API keys, signing keys, encryption keys — are encrypted at rest and never stored in plaintext. Secrets are version-controlled in encrypted form; decryption keys are distributed out-of-band and never committed to the repository. Automated tooling prevents unencrypted secrets from reaching version control. CI/CD pipelines use environment-scoped secrets isolated from the application repository.
5. Audit Logging
Servo maintains a comprehensive, tamper-evident audit trail of all data modifications across the platform.
Automatic and Complete Coverage
All data changes are captured automatically — no application code needs to opt in. Coverage is validated continuously; gaps are treated as a hard failure. The audit log cannot be modified or bypassed.
What Is Logged
Each audit entry captures:
- Who made the change: user identity and actor type (human, AI agent, system, API key)
- If an AI agent acted on behalf of a user, both identities are recorded
- What changed: the affected record and its previous and current state
- When it happened, in UTC
- Where the request originated: client IP address
- A correlation ID linking all changes made within a single operation
- Whether the action was performed by a Servo administrator
Non-Destructive by Default
Records are never permanently deleted by default. Deletions preserve the full audit trail and enable data recovery. Permanent removal requires explicit administrative action.
6. API Security
Rate Limiting
All API endpoints are rate-limited per client to defend against abuse and credential stuffing. Clients that exceed the limit receive a standard retry response. Failed authentication attempts count toward the limit.
Input Validation and SQL Injection Prevention
All database queries use parameterized statements — user-supplied values are never interpolated into query strings. Dynamic query components are validated against an allowlist before use.
Type-Safe API Responses
All API responses are required to use explicitly typed structures. Untyped or catch-all response shapes are blocked by automated tooling in the pre-commit and CI pipeline. This prevents accidental data leakage and ensures all response fields are intentional.
Request Field Stripping
System-managed fields are stripped from all incoming request bodies before processing. Clients cannot set or override these values.
CORS Policy
Cross-Origin Resource Sharing is configured with an explicit allowlist of permitted origins. Requests from unlisted origins are rejected. Wildcards are not used.
Client-Provided ID Validation
Servo supports client-generated record IDs for optimistic UI patterns. All client-supplied IDs are validated server-side before use.
Fault Isolation
Unhandled application errors are caught globally, logged internally, and return a safe response to the client. Internal state and stack traces are never exposed in API responses.
7. Infrastructure Security
Cloud Provider and Compute Isolation
Servo runs on AWS using Amazon ECS Fargate. Each container runs in its own isolated execution environment with no shared compute resources between tenants. Network traffic is controlled via VPC security groups. Container images are pulled from a private ECR registry.
Least-Privilege IAM
ECS tasks are assigned IAM roles with least-privilege access. The execution role grants only ECR image pull and CloudWatch log write permissions. The task role grants only the specific S3 and database access the application requires — no administrative AWS permissions are granted to running application containers.
Database Security
The production database uses connection pooling to prevent resource exhaustion. Schema migrations are managed with automated tooling and tracked in version control. Credentials are never hardcoded — they are loaded from encrypted environment configuration at runtime.
Session Store
Session and temporary authentication state is held in an isolated, authenticated store per environment. Temporary tokens expire automatically and are invalidated immediately upon use.
8. Code Security Practices
Automated Pre-Commit Enforcement
A suite of automated checks runs before every commit, catching security-relevant issues before they reach the repository. Commits that violate these rules are rejected locally without requiring a CI round-trip.
Protected Code History
The repository enforces a merge-only workflow. History rewrites are blocked and cannot be bypassed, protecting the integrity of the code change audit trail.
Dependency Pinning
All dependencies are pinned to exact versions, ensuring reproducible builds and preventing unintended dependency drift.
Observability and Anomaly Detection
All application activity is instrumented with distributed tracing. Every request is tagged with a correlation ID, tenant context, and user identity throughout the full trace. This provides complete observability into system behavior and enables detection of anomalous activity patterns.
9. Data Classification and Handling
Sensitive Data
Servo handles personally identifiable information (PII) including names, email addresses, phone numbers, and IP addresses as part of normal platform operation. Passwords are never stored — authentication is delegated to WorkOS. Third-party credentials (API keys, tokens) are encrypted at rest using AES-256 before storage.
Data Residency
Customer data is stored in AWS infrastructure in the United States (us-east-1 region). Data is not transferred to other regions without explicit configuration.
Timestamps
All timestamps are stored and returned in UTC, ensuring consistent time representation across the system.
10. Third-Party Services
Servo uses a limited set of third-party services as part of its infrastructure:
- WorkOS — Identity and SSO management
- AWS — Cloud infrastructure (compute, storage, networking)
- Twilio — SMS and communication services
- Plaid — Financial data connectivity
- Axiom — Log and trace storage
Third-party integrations are authenticated using scoped API keys stored encrypted at rest.
11. Incident Response and Policy
If you discover a security vulnerability or have a concern about how data is handled, contact us directly at hi@servohq.com. We respond as quickly as possible.
This policy reflects the current state of our platform and is updated on a continuous basis as the system evolves.