-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
115 additions
and
48 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
# Playground | ||
|
||
## What is Playground? | ||
|
||
PlayGround is a safe building operating system (SBOS), that incorporates a structured semantic representation of the building (based on [Brick](https://brickschema.org)) to inform the safe, multi-tenant execution of untrusted applications. We use the semantic representation to implement (a) a novel graph-based capability mechanism for fine-grained and expressive access control management, and (b) a resource isolation mechanism with preemptive interventions and passive telemetry-based live resource monitoring. | ||
|
||
## Why does this matter? | ||
|
||
Despite technological and standardization victories, the pace of innovation and the adoption rate of smart building applications in the real world remains low due to safety reasons. | ||
|
||
> I bet very few have used a real building application in the wild. | ||
Building managers are naturally reluctant to deploy third party building applications which are unvetted and possibly buggy. The inability of modern buildings to properly restrict an application's permissions also makes the application's execution generally opaque to the manager, unless intensive manual effort is invested to monitor them. | ||
|
||
Playground, is designed to tackle these issues. The goal of Playground is to encourage innovation and exploration of how modern building applications can provide value to occupants, managers, and other stakeholders while avoiding the intensive manual effort required to deploy them *safely*. | ||
|
||
|
||
## Citation | ||
|
||
A [paper](https://ieeexplore.ieee.org/abstract/document/10571633) describing the design philosophies and technical contributions of Playground was published in 2024 ACM/IEEE 15th International Conference on Cyber-Physical Systems (ICCPS) and was awarded as one of the 🏆best paper finalists🏆. If you find Playground to be helpful, please consider cite | ||
```latex | ||
@INPROCEEDINGS{10571633, | ||
author={Fu, Xiaohan and Liu, Yihao and Koh, Jason and Hong, Dezhi and Gupta, Rajesh and Fierro, Gabe}, | ||
booktitle={2024 ACM/IEEE 15th International Conference on Cyber-Physical Systems (ICCPS)}, | ||
title={Playground: A Safe Building Operating System}, | ||
year={2024}, | ||
volume={}, | ||
number={}, | ||
pages={111-122}, | ||
keywords={Smart buildings;Costs;Operating systems;Buildings;Semantics;Programming;Maintenance;Brick;building;isolation;capability}, | ||
doi={10.1109/ICCPS61052.2024.00017}} | ||
``` | ||
|
||
## Documentation | ||
|
||
Please find the documentation on <https://brickschema.github.io/playground/>. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,55 @@ | ||
# Configuration | ||
|
||
Usually a `.env` file is created in the project root directory. | ||
The file can be used to configure the playground server. | ||
|
||
For example, if the default server port should be changed from `9000` to `10000`, | ||
the following line can be added in the `.env` file: | ||
|
||
```dotenv title=".env" | ||
SERVER_PORT=10000 | ||
``` | ||
|
||
Alternatively, environment variables can also be used, and its priority is higher. | ||
|
||
```bash | ||
export SERVER_PORT=10000 | ||
``` | ||
|
||
For detailed environment variables precedence rules, check the section [Environment Variables Precedence](#environment-variables-precedence). | ||
|
||
!!! note | ||
|
||
If docker-compose is used to deploy the service, and the configuration entry is not listed in the compose file, | ||
the entry should be added to the "environment" section manually. | ||
|
||
## Configuration List | ||
|
||
There are three types of configurations: | ||
|
||
+ [Database](db.md): Database connection | ||
+ [Authorization](auth.md): JWT, CORS, OAuth2 | ||
+ [Backend](backend.md): Server host, port, url, and etc. | ||
|
||
## Environment Variables Precedence | ||
|
||
=== "Docker Compose (recommended)" | ||
|
||
> The order of precedence (highest to lowest) is as follows: | ||
> | ||
> 1. Set using docker compose run -e in the CLI. | ||
> 2. Set with either the environment or env_file attribute but with the value interpolated from your shell or an environment file. (either your default .env file, or with the --env-file argument in the CLI). | ||
> 3. Set using just the environment attribute in the Compose file. | ||
> 4. Use of the env_file attribute in the Compose file. | ||
> 5. Set in a container image in the ENV directive. Having any ARG or ENV setting in a Dockerfile evaluates only if there is no Docker Compose entry for environment, env_file or run --env. | ||
> | ||
> Source: <https://docs.docker.com/compose/environment-variables/envvars-precedence>{target="_blank"} | ||
|
||
=== "Direct" | ||
|
||
> Even when using a dotenv file, pydantic will still read environment variables as well as the dotenv file, environment variables will always take priority over values loaded from a dotenv file. | ||
> | ||
> Source: <https://docs.pydantic.dev/latest/concepts/pydantic_settings/#dotenv-env-support>{target="_blank"} | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,32 +1 @@ | ||
# About | ||
|
||
## What is Playground? | ||
|
||
PlayGround is a safe building operating system (SBOS), that incorporates a structured semantic representation of the building (based on [Brick](brickschema.org)) to inform the safe, multi-tenant execution of untrusted applications. We use the semantic representation to implement (a) a novel graph-based capability mechanism for fine-grained and expressive access control management, and (b) a resource isolation mechanism with preemptive interventions and passive telemetry-based live resource monitoring. | ||
|
||
## Why does this matter? | ||
|
||
Despite technological and standardization victories, the pace of innovation and the adoption rate of smart building applications in the real world remains low due to safety reasons. | ||
|
||
> I bet very few have used a real building application in the wild. | ||
Building managers are naturally reluctant to deploy third party building applications which are unvetted and possibly buggy. The inability of modern buildings to properly restrict an application's permissions also makes the application's execution generally opaque to the manager, unless intensive manual effort is invested to monitor them. | ||
|
||
Playground, is designed to tackle these issues. The goal of Playground is to encourage innovation and exploration of how modern building applications can provide value to occupants, managers, and other stakeholders while avoiding the intensive manual effort required to deploy them *safely*. | ||
|
||
|
||
## Citation | ||
|
||
A [paper](https://ieeexplore.ieee.org/abstract/document/10571633) describing the design philosophies and techinical contributions of Playground was published in 2024 ACM/IEEE 15th International Conference on Cyber-Physical Systems (ICCPS) and was awarded as one of the 🏆best paper finalists🏆. If you find Playground to be helpful, please consider cite | ||
```latex | ||
@INPROCEEDINGS{10571633, | ||
author={Fu, Xiaohan and Liu, Yihao and Koh, Jason and Hong, Dezhi and Gupta, Rajesh and Fierro, Gabe}, | ||
booktitle={2024 ACM/IEEE 15th International Conference on Cyber-Physical Systems (ICCPS)}, | ||
title={Playground: A Safe Building Operating System}, | ||
year={2024}, | ||
volume={}, | ||
number={}, | ||
pages={111-122}, | ||
keywords={Smart buildings;Costs;Operating systems;Buildings;Semantics;Programming;Maintenance;Brick;building;isolation;capability}, | ||
doi={10.1109/ICCPS61052.2024.00017}} | ||
``` | ||
{% include-markdown "../README.md" %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters