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
store:book
Example node · illustrative data
{
"_type": "store:book",
"title": "Hamlet",
added by the store:licensed feature "rights": {
"license": "Editorial, non-commercial",
"holder": "Example Press",
"territories": ["US", "CA"]
},provenance on every change "_system": {
"changeset": "41:3b5d8e17a40c92e6d518",
"modified_by": "editor"
}}
Checked against store:book on every write, with rights and provenance on the node itself.
store:authored-byWilliam Shakespeare store:authorstore:suggestsMacbeth store:bookstore:suggestsRomeo and Juliet store:booka:childof Books n:nodea:has_tagplay
Typed, directional associations. Traverse, query or fetch the neighborhood with GraphQL.
masterspring-catalogRelease: Spring 2026
44Merge spring-catalog into master · 1 conflict resolved inrights.territories, kept spring-catalog · editor43:7c21d0a4Edit/summaryon spring-catalog · editor42:e9a03f61Add EU torights.territorieson spring-catalog41:3b5d8e17Add CA torights.territorieson master
- editorial
- staging
- live
Every change is a changeset. Releases promote approved branches on schedule.
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.
Rules bind to events such as “before a node is updated”, and the same content answers full-text search, query, graph traversal and GraphQL.
See types, features and associations Read the content modeling guide
Show the store:book typeHide the store:book type
store:bookType{
"_qname": "store:book",
"_type": "d:type",
"_parent": "n:node",
"properties": {
"title": { "type": "string" },
"summary": { "type": "string" }
},
"mandatoryFeatures": {
"store:licensed": {}
}
}
The type behind the Hamlet node above. mandatoryFeatures requires every book to carry rights.
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
masterspring-catalog
rights.territories changed on both branches. The differences are marked.["US", "CA"]
Drops EU["US", "EU"]
Drops CA["US", "CA", "EU"]
Keeps bothNext changeset: 44Choose a version to create the merge changeset on master.
Agent answer: No. The EU isn’t cleared on master.Not yet. Agents answer only from the approved release.Yes. The EU is cleared in Spring 2026.
The reviewer step. Until then, agents use the last approved changeset.Approved changesets can’t be changed. to try another version.
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.
approved data set · master
Can our EU library portal show the Hamlet summary?
No.Not yet.Yes. Example Press licenses the summary for non-commercial use, such as a library portal, in cleared territories only. The EU is not a cleared territory on master. The EU clearance is merged but still in review, and agents answer only from approved content. The EU is cleared in the approved Spring 2026 release.
Resolve the merge above to change this answer
Keep spring-catalog above to clear the EU
Awaiting release approval in the merge above
store:book- License
- Editorial, non-commercial
- Territories
- US, CA
- Changeset
41:3b5d8e17- Release
- Pending mergeAwaiting approvalSpring 2026
Show the REST responseHide the REST response
GET /repositories/$REPO/branches/master/nodes/a1f3c9e27b5d40e86c12
{
"_type": "store:book",
"title": "Hamlet",
"summary": "Hamlet is a tragedy by William Shakespeare…",
rights "rights": {
"license": "Editorial, non-commercial",
"holder": "Example Press",
"territories": ["US", "CA"]
},provenance "_system": {
"changeset": "41:3b5d8e17a40c92e6d518",
"modified_by": "editor"
}}
Run this merge on your own content with an engineer.You kept master, so the EU stays blocked for agents. See how your own rights rules would play out, with an engineer.That was a merge, a review and a rights change reaching an agent. See the same flow on one of your own content types.
Request a demoYour cloud or ours. Check our work either way.
Run the same platform as a managed service or inside your own infrastructure, and let security and platform teams verify how it is built and shipped without waiting for a sales call.
- Gitana Cloud
- Fully managed in North America (Virginia) or Europe (Frankfurt), with upgrades, backups and monitoring handled for you.
- Cloud plans
- Self-managed
- Docker images with Kubernetes and Helm guidance for Amazon EKS and ECS, Azure AKS, Google GKE or on-premises.
- Self-managed plans
- Signed images, SBOM and VEX
- Every release image is signed with Sigstore cosign and carries CycloneDX and SPDX bills of materials, VEX statements and scan results.
- Browse release artifacts
- Security and status
- Hosting, encryption, identity, backups and penetration testing in one overview. Gitana Cloud runs in ISO 27001-certified data centers.
- Read the overview System status (opens in a new tab)
Show the cosign commandsHide the cosign commands
# $VERSION is any release listed under Releases cosign verify --key gitana-cosign.pub \ docker.io/cloudcms/api-server:$VERSION The following checks were performed on each of these signatures: - The cosign claims were validated - The signatures were verified against the specified public key
# SBOMs are attested per architecture: arm64 here cosign verify-attestation --key gitana-cosign.pub \ --type cyclonedx \ docker.io/cloudcms/api-server:$VERSION-arm64 \ | jq -r '.payload' | base64 -d | jq '.predicate' \ > api-server.cdx.json
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.
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.
- Node.js
- Java
- Python
- PHP
- Ruby
- Go
- React
- Next.js
- Vue
Plus integrations for AWS, Azure, Google Cloud, Okta and Ping Identity.
# Content licensed for the US, on master # $API is https://api.cloudcms.com (Gitana Cloud) curl -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"rights.territories": "US"}' \ "$API/repositories/$REPO/branches/master/nodes/query"
{
"rows": [{
"_doc": "a1f3c9e27b5d40e86c12",
"title": "Hamlet",
"rights": {
"license": "Editorial, non-commercial",
"territories": ["US", "CA"]
}
}],
"size": 1, "total_rows": 1, "offset": 0
}
branch.queryNodes({ "rights.territories": "US" }) .each(function() { console.log(this.title, this.rights.license); });
See Gitana with your own contentRun that merge on your own content
Bring one of your own content types. A solutions engineer will model it, branch it and deliver it with you, hosted in our cloud or running in yours.Bring one of your own content types. A solutions engineer will model it, branch it, merge a rights change and deliver it to an agent with you, hosted in our cloud or running in yours. The same call covers architecture, security and deployment questions.