What is the purpose of the "demo" version there? Wouldn't it be easier to have a separate "demo" controller? You could then simply define the default for the domains as:
routers = dict(
BASE = dict(
domains = {"domain.com":"app", "demo.domain.com":"app/demo/index"},
default_application = 'app',
default_controller = 'org',
default_function = 'index'
)
)

