Open Standard for Infrastructure Resource Interchange Schema
OSIRIS JSON produces vendor-neutral JSON documents to describe infrastructure resources and their topological relationships across heterogeneous IT and OT environments. An interchange format designed for portability, end-to-end clarity, and OT inclusion from the ground up.
The problem
Modern infrastructure spans multiple stacks and providers: hyperscalers (AWS, Azure, GCP etc.), public clouds providers, on-prem datacenters and complex OT environments integration.
While some platforms export inventories (often as JSON), the representations are inconsistent across vendors even for equivalent concepts like identity, properties, and relationships.
The solution
OSIRIS JSON defines a vendor-neutral JSON schema for describing infrastructure resources and topological relationships across heterogeneous environments.
The goal of OSIRIS JSON is to normalize exports from hyperscalers and cloud providers as well as on-prem datacenters devices like (compute, storage, network).
From initial release of the Specification OSIRIS JSON supports OT inclusion by design.
What you get
Six core capabilities that make OSIRIS JSON an open standard for infrastructure resource and topology interchange.
Unified design
Built for heterogeneous IT environments, with a clear extension path for OT and other domains as adoption grows.
Explicit relationships
First-class representation of connections, dependencies, containment, and other topology relationships.
Flexible grouping
Support for logical and physical grouping that reflects real organizational and architectural structures without forcing a single taxonomy.
Provider attribution
Resources preserve traceability to their source system/provider while using a standardized, vendor-neutral representation.
Designed for extensibility
A defined mechanism for vendor-specific properties and custom resource types without breaking compatibility.
Three-Level validation
Structural (schema), semantic and domain validation improving consistency and data quality when validation tooling is applied.
Design principles
OSIRIS JSON is a static snapshot interchange format. It captures what exists and how it relates at a point in time. It was not designed as a real-time monitoring system, a deployment tool, or an Infrastructure-as-Code engine.
block OSIRIS JSON is NOT
check_circle OSIRIS JSON IS
Optimized for scenarios where documentation and topology must be exchanged between systems and teams.
Get hands-on with OSIRIS JSON examples
Explore real-world OSIRIS JSON topology snapshots with relationships, providers and groupings captured in one portable JSON document.
Application running on Azure with API Services on AWS
1{
2 "$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
3 "version": "1.0.0",
4 "metadata": {
5 "timestamp": "2026-01-08T15:45:00Z",
6 "generator": {
7 "name": "manual",
8 "version": "1.0.0"
9 },
10 "scope": {
11 "name": "Multi-cloud web application",
12 "description": "Three-tier application with frontend and database in Azure East US, API backend in AWS US-East-1",
13 "providers": ["aws", "azure"],
14 "regions": ["us-east-1", "eastus"],
15 "accounts": ["123456789012"],
16 "environments": ["production"]
17 }
18 },
19 "topology": {
20 "resources": [
21 {
22 "id": "azure::app-web-frontend",
23 "type": "compute.container",
24 "name": "web-frontend-prod",
25 "description": "Azure App Service hosting React frontend",
26 "provider": {
27 "name": "azure",
28 "type": "Microsoft.Web/sites",
29 "native_id": "/subscriptions/sub-001/resourceGroups/prod-rg/providers/Microsoft.Web/sites/web-frontend-prod",
30 "region": "eastus",
31 "subscription": "sub-001",
32 "tenant": "tenant-001"
33 },
34 "status": "active",
35 "state": "running",
36 "properties": {
37 "kind": "app,linux",
38 "runtime_stack": "NODE|18-lts",
39 "default_hostname": "web-frontend-prod.azurewebsites.net",
40 "https_only": true,
41 "ftps_state": "Disabled",
42 "reserved": true
43 },
44 "tags": {
45 "Environment": "production",
46 "Tier": "frontend",
47 "Platform": "azure"
48 }
49 },
50 {
51 "id": "aws::i-0xyz789abc123",
52 "type": "compute.vm",
53 "name": "api-server-prod-01",
54 "description": "AWS EC2 instance running API backend",
55 "provider": {
56 "name": "aws",
57 "type": "AWS::EC2::Instance",
58 "native_id": "i-0xyz789abc123",
59 "region": "us-east-1",
60 "account": "123456789012",
61 "zone": "us-east-1b"
62 },
63 "status": "active",
64 "state": "running",
65 "properties": {
66 "instance_type": "c5.xlarge",
67 "platform": "linux",
68 "image_id": "ami-0c55b159cbfafe1f0",
69 "private_ip": "10.0.2.78",
70 "public_ip": "203.0.113.10",
71 "vpc_id": "vpc-0def456",
72 "subnet_id": "subnet-0ghi789"
73 },
74 "tags": {
75 "Environment": "production",
76 "Tier": "backend",
77 "Platform": "aws"
78 }
79 },
80 {
81 "id": "azure::sql-prod-db",
82 "type": "application.database",
83 "name": "prod-sql-database",
84 "description": "Azure SQL Database for application data",
85 "provider": {
86 "name": "azure",
87 "type": "Microsoft.Sql/servers/databases",
88 "native_id": "/subscriptions/sub-001/resourceGroups/prod-rg/providers/Microsoft.Sql/servers/prod-sql-srv/databases/prod-db",
89 "region": "eastus",
90 "subscription": "sub-001"
91 },
92 "status": "active",
93 "state": "online",
94 "properties": {
95 "edition": "Standard",
96 "service_tier": "S2",
97 "max_size_bytes": 268435456000,
98 "server_name": "prod-sql-srv.database.windows.net",
99 "collation": "SQL_Latin1_General_CP1_CI_AS",
100 "zone_redundant": false
101 },
102 "tags": {
103 "Environment": "production",
104 "Engine": "mssql",
105 "Platform": "azure"
106 }
107 },
108 {
109 "id": "azure::redis-cache-prod",
110 "type": "application.cache",
111 "name": "prod-redis-cache",
112 "description": "Azure Redis Cache for session storage",
113 "provider": {
114 "name": "azure",
115 "type": "Microsoft.Cache/Redis",
116 "native_id": "/subscriptions/sub-001/resourceGroups/prod-rg/providers/Microsoft.Cache/Redis/prod-redis",
117 "region": "eastus",
118 "subscription": "sub-001"
119 },
120 "status": "active",
121 "state": "running",
122 "properties": {
123 "sku": "Standard",
124 "family": "C",
125 "capacity": 1,
126 "redis_version": "6.0",
127 "port": 6379,
128 "ssl_port": 6380,
129 "hostname": "prod-redis.redis.cache.windows.net"
130 },
131 "tags": {
132 "Environment": "production",
133 "Purpose": "session-cache",
134 "Platform": "azure"
135 }
136 }
137 ],
138 "connections": [
139 {
140 "id": "conn-frontend-to-api",
141 "type": "dependency",
142 "source": "azure::app-web-frontend",
143 "target": "aws::i-0xyz789abc123",
144 "direction": "forward",
145 "name": "Frontend to API",
146 "description": "Cross-cloud API calls from Azure frontend to AWS backend",
147 "status": "active",
148 "properties": {
149 "protocol": "https",
150 "port": 443,
151 "endpoint": "https://api.example.com/v1",
152 "authentication": "oauth2"
153 },
154 "tags": {
155 "type": "cross-cloud",
156 "critical": "true"
157 }
158 },
159 {
160 "id": "conn-api-to-db",
161 "type": "dependency",
162 "source": "aws::i-0xyz789abc123",
163 "target": "azure::sql-prod-db",
164 "direction": "forward",
165 "name": "API to Database",
166 "description": "Database connection from AWS API to Azure SQL",
167 "status": "active",
168 "properties": {
169 "protocol": "tds",
170 "port": 1433,
171 "connection_string_encrypted": true,
172 "connection_pool_size": 20
173 },
174 "tags": {
175 "type": "cross-cloud",
176 "critical": "true"
177 }
178 },
179 {
180 "id": "conn-frontend-to-cache",
181 "type": "dependency",
182 "source": "azure::app-web-frontend",
183 "target": "azure::redis-cache-prod",
184 "direction": "bidirectional",
185 "name": "Frontend session cache",
186 "description": "Session data storage and retrieval",
187 "status": "active",
188 "properties": {
189 "protocol": "redis",
190 "port": 6380,
191 "ssl": true,
192 "use_case": "session-storage"
193 }
194 },
195 {
196 "id": "conn-api-to-cache",
197 "type": "dependency",
198 "source": "aws::i-0xyz789abc123",
199 "target": "azure::redis-cache-prod",
200 "direction": "bidirectional",
201 "name": "API cache access",
202 "description": "API response caching",
203 "status": "active",
204 "properties": {
205 "protocol": "redis",
206 "port": 6380,
207 "ssl": true,
208 "use_case": "response-cache"
209 }
210 }
211 ]
212 }
213}
Get involved in the community
GitHub Discussions
Ask questions, share ideas, and help shape the specification
GitHub Repository
Contribute code, report issues, and submit pull requests
Ways you can contribute
Code
Build producers/parsers for hyperscalers, cloud platforms and on-prem IT/OT systems.
Documentation
Improve guides, write tutorials and real-world use cases to help others adopt OSIRIS JSON.
Testing
Validate the spec and schema with real infrastructure topologies and edge cases.
Feedback
Report issues, suggest improvements, or propose extensions and new features.
Tooling
Create SDKs, CLI tools, validators, exporters and documentation/diagramming tools.
Spread the Word
Write posts, give talks, record demos and share OSIRIS JSON with your network.
Design & templates
Design high quality diagram templates, graphic layouts for docs and website, icons, sample datasets and reusable assets for the community.
Roadmap
OSIRIS JSON is community-driven
OSIRIS JSON was born facing real-world problems and continues to grow through feedback, new ideas and practical contributions. If you have suggestions or want to help, jump in your input helps shape both the roadmap and the standard.
Support OSIRIS JSON
OSIRIS JSON is in its early days. Right now, adoption and feedback matter more than funding. Try the tooling, test it against real infrastructure, and tell us what's missing.
Use it and report back
Run a producer on your infrastructure, validate the output, and open an issue when something breaks.
Contribute
Submit real-world examples, improve docs, or build a producer for your platform.
Spread the word
Share OSIRIS with your team, write about your experience, or mention it in relevant communities.