     pending = 0
 
     dirs = [ opts.outdir ]
+
+    getModels = =>
+      if opts.schema is null and 'object' is typeof opts.config
+        @_time "#{chalk.blue('config')}: write bongo schema to #{opts.configFile}"
+        child_process.exec "node #{__dirname}/get-bongo-schema.js", (err, res) =>
+          throw err if err
+          opts.schema = JSON.parse res
+          ws = fs.createWriteStream opts.configFile
+          s = JSONStream.stringifyObject()
+          s.pipe ws
+          s.write [ 'rev', opts.rev ]
+          s.write [ 'schema', opts.schema ]
+          s.end()
+          ws.on 'finish', =>
+            @_timeEnd "#{chalk.blue('config')}: write bongo schema to #{opts.configFile}"
+            @_build()
+      else
+        @_build()
 
     getFiles opts.manifests, opts.basedir,
       (err, files) =>

      outdir    : defined opts.outdir, process.cwd()
      baseurl   : defined opts.baseurl, '/'
      defaults  : defined opts.globalsFile, {}
      cfg       : defined opts.configFile, {}
      manifests : defined opts.use, []

    opts.basedir = path.resolve __dirname, opts.basedir
    opts.outdir = path.resolve __dirname, opts.outdir

    if 'string' is typeof opts.cfg
      opts.cfg = require @_resolve(opts.cfg)

    opts.config = defined opts.cfg.config, {}
    opts.schema = defined opts.cfg.schema, {}
    opts.rev    = defined opts.config.version, '2.0'

    if opts.revId
      opts.outdir = path.join opts.outdir, opts.rev
      opts.baseurl = "#{opts.baseurl}/#{opts.rev}"

    opts.spriteTmpCssOutdir = @_resolve SPRITES_TMPDIR

              createDirs dirs, =>
                opts.manifests = manifests
                opts.rsManifests = rsManifests
                getModels()
            cb()

          s.pipe(parse).pipe(tr)
