> ## Documentation Index
> Fetch the complete documentation index at: https://docs.speckle.systems/llms.txt
> Use this file to discover all available pages before exploring further.

# Key Concepts

> Understand the fundamental concepts behind Speckle's developer platform

## Object-Based Data Exchange

Speckle uses **objects** as the fundamental unit of data exchange, not files. This means:

* **Data is structured and queryable** - Objects have defined schemas and properties
* **Objects can reference each other** - Build complex hierarchical data structures
* **Version history is built-in** - Every change creates a traceable version
* **No file format conversions needed** - Work directly with structured data

<Note>
  Instead of files, Speckle stores sets of objects in **Models**. Models are contained within **Projects**. Projects are contained within **Workspaces**. Learn more about organizing your data in the [User Guide](/workspaces/projects).
</Note>

## Open & Extensible

Speckle is fully open source and designed to be extended:

* **Open source** - All core components are available on [GitHub](https://github.com/specklesystems)
* **API-first** - Everything is accessible via REST and GraphQL APIs
* **SDKs available** - Python SDK with more coming
* **Customizable** - Deploy your own server with custom branding and workflows

## Version Control for AEC

Every change creates a new **version**, giving you:

* **Complete history and traceability** - See who changed what and when
* **Ability to compare versions** - Diff models to understand changes
* **Branching and merging workflows** - Work on parallel development tracks
* **Collaboration features** - Built-in commenting and review tools

## Data Model

Speckle represents building data as a **directed acyclic graph (DAG)**:

* Objects reference other objects but never themselves
* Properties can be primitive (strings, numbers) or references to other objects
* References are one-way (parent → child)
* Common structures include `elements`, `parameters`, `units`, `applicationId`

<Info>
  For a deep dive into Speckle's data model, see the [Data Schema documentation](/developers/data-schema/overview).
</Info>

## Next Steps

* [Data Schema Overview](/developers/data-schema/overview) - Learn about Speckle's data structures
* [Getting Started](/developers/getting-started) - Build your first integration
* [Python SDK](/developers/sdks/python/introduction) - Start working with Speckle data
