Skip to main content

The model

Graphor’s tenancy model is single-tenant logical isolation on shared infrastructure. Every customer’s data lives in the same cloud project, the same primary database, the same managed graph store, the same object storage — but is partitioned at the application layer by an organization_id foreign key that propagates through every customer-owned record. This is the same model that most modern multi-tenant SaaS products use, including the upstream providers that Graphor itself depends on. It is well understood by SI evaluators, and it scales to high tenant counts without the operational complexity of one project / one cluster / one bucket per customer. The model is not suitable for customers that contractually require physically separated infrastructure; for those cases see §8. The tenancy hierarchy is:
Every record below the Project layer carries the Project’s identifier; every Project carries an organization_id (nullable for personal-tier projects that have not been promoted to an Organization). Every authenticated database query, every object-storage key, every graph query is scoped by these identifiers — there is no application path that retrieves data without scoping by the calling user’s accessible Project set.

1. Isolation by layer

The same logical partition is enforced at every layer below the application. The table records how the partition shows up at each layer and what the failure mode would be if the partition were violated.

2. API tokens

The API token model is the primary mechanism through which the customer authenticates programmatic access to Graphor. Tokens are per-project today. Every API token created in the Graphor UI is bound at creation time to exactly one Project. A token created in Project A cannot read, write, or otherwise act on Project B; the verification middleware rejects the request before it reaches any handler. This per-project model is the customer’s first-line isolation control. The customer-side best practice is to provision one token per Project per integration — do not share a single master token across multiple projects or environments, and do not reuse a development token in production. Each token can be revoked independently, has its own audit trail, and limits the blast radius of a leak. Token format. Every token is structured as <prefix>_<identifier:12chars>_<secret:32chars>. The identifier is indexed for O(1) lookup; the secret is stored only as a hash. The full token is shown to the customer exactly once at creation — Graphor cannot recover a lost token, only revoke and re-issue. Token controls available today. Token controls on the enterprise-tier roadmap.

3. Explicit non-decisions

The following controls are sometimes asked about in SI questionnaires. Graphor has deliberately not built them; this section records that decision so SI reviewers know it is a conscious choice rather than an oversight.

4. Observability traces

Observability is tier-aware. The full retention rules and DSR endpoints are in Data Retention §4; this section focuses on the isolation dimension.
  • Enterprise tier — tracing is off by default. No traces are produced for Enterprise-tier projects unless the project owner explicitly enables tracing. The most conservative isolation posture: there is no trace surface to isolate from.
  • Free and Pro tiers — tracing is on by default. Each trace is tagged with the Project identifier; Synapse personnel access traces under the same Project-scoped filtering as the customer’s own debugging UI. A Brazilian-PII regex mask is applied to every string field before send.
Synapse personnel do not have unrestricted “all-projects view” on the observability store — role assignment scopes individual engineer access to projects under active support or incident response.

5. Customer best practices

There are a few things the customer can do to harden their own use of Graphor beyond the platform defaults:
  1. One token per Project per integration. Do not share a single token across multiple Projects or environments. A leaked token then compromises only the Project and integration it was created for.
  2. Set expires_at on every new token. A token that will never expire is a token that will eventually be in a stale backup, a forgotten config file, or a departed-employee’s machine.
  3. Review the token list at least annually (quarterly is recommended for regulated workloads). Sort by last_used_at and revoke any token that has not been used in the review window unless you know why it must remain.
  4. Promote Projects to an Organization early. Personal-tier Projects (no organization_id) cannot apply Organization-level access controls. Once a Project moves to an Organization, member management, billing, and (eventually) Organization-level controls become available.
  5. For Enterprise-tier projects, leave observability tracing off unless you have a specific debugging engagement open. Re-enable it temporarily, then turn it off; the tracing toggle is reversible and does not lose product functionality.
  6. For Enterprise-tier deployments, ask about customer-managed encryption keys and physical separation early. Both are available but require lead time to provision.

6. Things that explicitly do happen at the Synapse-personnel layer

For transparency, the access Synapse personnel have to customer-owned data:
  • Project-scoped observability access for engineers actively supporting a customer or investigating an incident. Scoped — not blanket — and audited.
  • Read access to the production primary database for the on-call engineer during incident response. All such access is logged via database audit logging.
  • Read access to the production customer-content storage for the on-call engineer during incident response. All such access is logged via object-storage audit logging.
Synapse personnel do not routinely access customer Content. There is no “browse customer documents” UI, no scheduled report that aggregates customer data, and no analytics pipeline that ships content (as opposed to operational metadata) off the production environment. See Model Use and Training §6 for the explicit non-commitments around use of customer content.

7. Personnel security

Logical isolation is only as strong as the controls on the personnel who can bypass it. The controls below apply to every Synapse person with access to the production environment and satisfy LGPD arts. 46–47 (security and confidentiality duty of treatment agents) and GDPR art. 28(3)(b) (processor’s obligation to ensure personnel commitment to confidentiality): Today’s posture (founder-led). As of the effective date in the front matter, the only person with persistent production access is the founder, who signed a written confidentiality undertaking on incorporation and who complies with the controls below. As the team grows, every additional person with production access will be required to comply before access is granted.
  • Confidentiality on hire. Every employee and contractor with production access signs a written confidentiality undertaking as a condition of engagement; the undertaking survives termination and explicitly covers Customer Content.
  • Multi-factor authentication. Production access requires MFA via the identity provider; hardware-key second factors are required for any persistent-privilege production role.
  • Least-privilege role assignment. Production roles follow least privilege; role grants are reviewed at least annually and on every personnel change (joiner / mover / leaver).
  • Onboarding and offboarding. Onboarding follows a documented checklist (account provisioning, MFA enrollment, role assignment, training attestation). Offboarding revokes credentials within one business day of departure; the founder maintains a documented backup-access procedure for continuity in the event of founder incapacitation (full description in Compliance §5.1).
  • Security and privacy training. All personnel complete a privacy and secure-coding training on hire and at least annually thereafter, with an attestation recorded. The training covers LGPD, Customer Content handling, the no-training commitment, and the incident-response runbook.
  • Background checks (forward-looking). Synapse commits that any future personnel with persistent production access will undergo background checks at the level customary for the jurisdiction of engagement before access is granted, subject to applicable privacy law. The founder’s background is disclosed under NDA on enterprise request.
The current Personnel Security policy and the attestation register (growing as the team scales) are available to enterprise customers under NDA on request via privacy@graphorlm.com.

8. What Graphor explicitly does NOT offer today

  • No physically separated infrastructure by default. Per §3, available on request under an enterprise SOW.
  • No row-level encryption with customer keys. Customer keys protect a Project’s data at the storage layer via customer-managed encryption keys on enterprise request, but individual rows are not encrypted with a per-record key.
  • No customer-owned database. The primary database is shared across customers; logical isolation is enforced at the application layer.
  • No fine-grained scoped tokens today. See §2 for the roadmap.

9. Change history

When the tenancy model, the token controls, the observability tier defaults, or the explicit non-decisions change, this table is updated and subscribers to subprocessors@graphorlm.com receive an email.

Contact