button : io.Button()
camera : media.ImageSource()
screen : media.ImageSink()

button.state > camera.trigger
camera.b64image > screen.b64image


# Deployment

rule outside : node_attr_match(index=["address", {"locality": "outside"}])
rule server  : runtime_name(name="server")

apply button : outside
apply camera : server
apply screen : server
