{
  "assemble" : {
    "broker_url": "http://127.0.0.1:16666/broker",
    "base_url": "http://127.0.0.1:19999",
    "appbundle_path": "./appbundle",

    "dev_web_app": {
      "$type": "http/WebApp",
      "$params": {
        "port": 8080,
        "static": ["../ui-dev/public", "../../doc/html"],
        "web_socket": true
      }
    },

    "user_web_app": {
      "$type": "http/WebApp",
      "$params": {
        "port": 80,
        "static": "../ui-user/public",
        "web_socket": true
      }
    },


    "web_app_for_port": {
      "$type": "http/WebApp",
      "$params": {
        "port": 19999
      }
    },
    "route_table": {
      "$type": "RouteTable",
      "$params": {
        "$type": "Store",
        "$params": "memory"
      }
    },
    "route_rules": [{
        "$type": "RouteRule",
        "$params": "auto"
      }, {
        "$type": "RouteRule",
        "$params": ["select", {
          "name": "http",
          "impl": "http"
        }]
      }],
    "router": {
      "$type": "Router",
      "$params": ["$route_table", {
        "rules": {
          "send": "$route_rules",
          "subscribe": "$route_rules",
          "subscribe_all": "$route_rules",
          "publish": "$route_rules"
      }}]
    },
    "mnode": {
      "$type": "MNode",
      "$params": ["$router", {
        "name": "center",
        "ports": {
          "accept": [{
            "name": "http",
            "impl": "http",
            "config": {
              "app": "$web_app_for_port",
              "base_url": "$base_url",
              "path": "/accept",
              "broker_url": "$broker_url"
            }
          }],
          "send": [{
            "name": "http",
            "impl": "http",
            "config": {
              "broker_url": "$broker_url"
            }
          }],
          "subscribe": [{
            "name": "http",
            "impl": "http",
            "config": {
              "app": "$web_app_for_port",
              "base_url": "$base_url",
              "path": "/subscribe",
              "path_for_all": "/subscribe_all",
              "broker_url": "$broker_url"
            }
          }],
          "publish": [{
            "name": "http",
            "impl": "http",
            "config": {
              "broker_url": "$broker_url"
            }
          }]
        }
      }]
    },

    "hub_store": {
      "$type": "HubStore",
      "$params": "memory"
    },
    "thing_store": {
      "$type": "ThingStore",
      "$params": "memory"
    },
    "service_store": {
      "$type": "ServiceStore",
      "$params": "memory"
    },
    "spec_store": {
      "$type": "SpecStore",
      "$params": "memory"
    },
    "specbundle_store": {
      "$type": "SpecBundleStore",
      "$params": "memory"
    },
    "session_store": {
      "$type": "SessionStore",
      "$params": "memory"
    },
    "graph_store": {
      "$type": "GraphStore",
      "$params": "memory"
    },
    "app_store": {
      "$type": "AppStore",
      "$params": "memory"
    },    
    "ui_store": {
      "$type": "UiStore",
      "$params": "memory"
    },  

    "entity_manager": {
      "$type": "EntityManager",
      "$params": [{
        "hub_store": "$hub_store",
        "thing_store": "$thing_store",
        "service_store": "$service_store",
        "spec_store": "$spec_store",
        "specbundle_store": "$specbundle_store",
        "session_store": "$session_store",
        "graph_store": "$graph_store",
        "app_store": "$app_store",
        "ui_store": "$ui_store"
      }]
    },

    "center": {
      "$type": "Center",
      "$params": {
        "id": "$id",
        "name": "sample center",
        "mnode": "$mnode",
        "config_path": "$config_path",
        "entity_manager": "$entity_manager",
        "appbundle_path": "$appbundle_path",
        "dev_web_app": "$dev_web_app",
        "user_web_app": "$user_web_app",
        "config_path": "$config_path",
        "workflow_engine": {
          "$type": "WorkflowEngine",
          "$params": {
            "mnode": "$mnode",
            "em": "$entity_manager"
          }
        },
        "heartbeat_server": {
          "store": {
            "$type": "Store",
            "$params": "memory"
          },
          "check_interval": 30000,
          "drop_threshold": 120000
        }
      }
    }
  }
}