The Open Platform for Enterprise Content

Publish licensed content using open standards with clear rights, versioning, provenance and lifecycle metadata — to humans and AI agents in real time.

  • In production since 2010
  • JSON Schema, REST & GraphQL
  • OAuth 2.0 & SAML 2.0
  • Gitana Cloud (US & EU) or self-managed
Hamlet store:book
master Approved
{
  "_doc": "a1f3c9e27b5d40e86c12",
  "_type": "store:book",
  "title": "Hamlet",
endowed by store:licensed  "rights": {
    "license": "CC BY-NC 4.0",
    "holder": "Example Press",
    "territories": ["US", "EU"]
  },  "_features": {
    "store:licensed": { "enabled": true }
  },
provenance on every change  "_system": {
    "changeset": "44:95f85022da145981fc85",
    "modified_by": "editor"
  }}

Validated against the store:book schema and its features on every write.

Example node · illustrative data
Trusted by enterprise teams worldwide
AstraZeneca Under Armour MassMutual Oxford University Press Alight Cricket Wireless Hotelplan Everyday Health MBC Group European Respiratory Society

Model content the way your business actually works.

Gitana stores content as a graph of typed nodes and associations, defined with JSON Schema. Features inject shared properties and behaviors across types, and every write is validated against the compiled model before it is accepted.

store:bookType
{
  "_qname": "store:book",
  "_type": "d:type",
  "_parent": "n:node",
  "properties": {
    "title": { "type": "string" },
    "summary": { "type": "string" }
  },
  "mandatoryFeatures": {
    "store:licensed": {}
  }
}

A type defines the shape of a book. It inherits from n:node and requires every book to carry rights.

store:licensedFeature
{
  "_qname": "store:licensed",
  "_type": "d:feature",
  "properties": {
    "rights": {
      "license": { "type": "string" },
      "holder": { "type": "string" },
      "territories": { "type": "array" }
    }
  }
}

A feature adds shared fields and behavior to any type that needs them, or to a single node.

store:authored-byAssociation
{
  "_qname": "store:authored-by",
  "_type": "d:association",
  "_parent": "a:linked",
  "properties": {
    "role": {
      "type": "string",
      "enum": ["author", "editor"]
    }
  }
}

An association is a typed, directional link from a book to its author that carries its own properties.

Example definitions. Types, features and associations are JSON Schema documents, stored and versioned like the content they describe.
Validation
Every write is checked on the server and the client against the type plus every feature applied to it.
Rules & behaviors
Bind policies such as “before a node is updated” (p:beforeUpdateNode) to rules, scripts or web hooks.
Query & traversal
Full-text search, SQL-like query, graph traversal and GraphQL over the same content.

Read the content modeling guide

Every change is a changeset. Every team gets a branch.

Gitana versions content the way source control versions code. Editors work in isolated workspaces, compare and merge with visual differencing, and promote approved releases on a schedule — with a complete, restorable history of every edit.

  • Changesets with point-in-time comparison and restore
  • Branches and workspaces for parallel work without collisions
  • Merge with conflict detection and field-level resolution
  • Releases scheduled and promoted across editorial, staging and live

How branching works

Merge spring-catalog into master 1 conflict
master spring-catalog
/summary changed on both branches
master

Hamlet is a tragedy by Will Shakespeare, believed to have been written between 1599 and 1601.

spring-catalog

Hamlet is a drama by William Shakespeare, believed to have been written between 1599 and 1601.

Example merge, modeled on Gitana’s conflict resolution view. Choose a version to resolve it.

Rights, provenance and lifecycle travel with every node.

The metadata that makes content trustworthy is part of the content itself, so every application, site and AI agent that consumes it receives the same rights and history.

To an application GET /nodes/a1f3c9e27b5d40e86c12
{
  "_type": "store:book",
  "title": "Hamlet",
  "summary": "Hamlet is a tragedy by William Shakespeare…",
rights  "rights": {
    "license": "CC BY-NC 4.0",
    "holder": "Example Press",
    "territories": ["US", "EU"]
  },provenance  "_system": {
    "changeset": "44:95f85022da145981fc85",
    "modified_by": "editor"
  }}
To an AI agent approved data set · master

Can we use the Hamlet summary in our EU catalog?

Yes, for non-commercial use. The summary is licensed CC BY-NC 4.0 by Example Press for the US and EU.

Hamletstore:book
License
CC BY-NC 4.0
Territories
US, EU
Changeset
44:95f85022
Release
Spring 2026
Example: the Hamlet node from above, delivered over the REST API and cited by an agent. Illustrative data.
Rights
Model licenses, holders and territories as data on the content, and enforce them with rules before anything ships.
Provenance
Each node records who changed it, when, and in which changeset, with audit trails across projects.
Lifecycle
Workflow-driven review and approval, then scheduled releases from editorial to staging to live.
Delivery
REST, GraphQL and SDKs for applications; CDNs, S3 and HTTP targets for publishing; approved data sets for AI agents.

AI & knowledge

Your cloud or ours. The same platform either way.

Choose a fully managed service operated by the team that builds Gitana, or run it inside your own infrastructure with full control.

Gitana Cloud

Fully managed, monitored and upgraded for you.

  • Hosting regions in North America (Virginia) and Europe (Frankfurt)
  • Upgrades, backups, monitoring and high availability handled for you
  • Encryption at rest (AES-256, AWS KMS) and in transit (TLS)
  • Continuous encrypted backups replicated across data centers

Self-managed

Run Gitana in your data center or private cloud.

  • Docker containers with Kubernetes and Helm guidance
  • Runs on Amazon EKS and ECS, Azure AKS, Google GKE or on-premises
  • Signed images with SBOM, VEX and scan results for every release

Open APIs, with the tools your teams already use.

Every capability is available through a REST API, GraphQL and SDKs for popular languages and frameworks. Query by structure, search full text, or traverse relationships across the content graph with GraphQL.

REST API
# Content licensed for the EU, on master
# $API is https://api.cloudcms.com (Gitana Cloud)
curl -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  --data '{ "rights.territories": "EU" }' \
  "$API/repositories/$REPO/branches/master/nodes/query"
Node.js driver
branch.queryNodes({ "rights.territories": "EU" })
    .each(function() {
        console.log(this.title, this.rights.license);
    });

Supported by the people who built it.

Gitana customers work directly with the engineers behind the platform — from architecture and content modeling through migration, upgrades and day-to-day operations. Independent and profitable since 2010, we are built for long-term partnerships.

I'm continually blown away by how far above and beyond you all go to support us. Absolutely the best customer service I've ever received.
The Sydney Children's Hospitals Network
Alana McDonald Senior Librarian, The Sydney Children's Hospitals Network

Check our work before you talk to us.

Security and platform teams can verify how Gitana is built, shipped and operated without waiting for a sales call.

Security overview
Hosting, encryption, identity, backups and penetration testing in one document. Gitana Cloud runs in ISO 27001-certified data centers.
Signed images
Every release image is signed with Sigstore cosign. Verify the signature offline against our published key.
SBOM and VEX
CycloneDX and SPDX bills of materials, VEX statements and vulnerability scan results for each image.
System status
Current and historical availability of Gitana Cloud, with incident reports.

See Gitana with your own content

Talk with a solutions engineer about your content model, governance requirements and deployment — hosted in our cloud or running in yours.