How can one run drush from project root when using multiple site configurations?
Try drush --uri=http://local.domain status from the root directory.

Also, you can create a file $HOME/.drush/aliases.drushrc.php, and define site aliases for each of your site. Then, drush @local status can be used.

Your aliases file would look something like this:

$aliases['local'] = array(
   'root' =&gt; '/path/to/drupal',
   'uri' =&gt; 'http://local.domain',
);
$aliases['staging'] = array(
   'root' =&gt; '/path/to/drupal',
   'uri' =&gt; 'http://staging.domain.com',
);
$aliases['live'] = array(
   'root' =&gt; '/path/to/drupal',
   'uri' =&gt; 'http://domain.com',
);


However, although it is off topic for your question, I must also mention that the multisite configuration you have set up here fails to meet the basic requirements for a viable dev -> test -> live workflow. In this configuration, your code is shared between all three environments. This means that when you update Drupal core on your dev site, the updated code will also be immediately applied to the live site, which affords no opportunity for testing. A propper dev -> test -> live workflow should use completely separate codebases for each environment, so that you may publish code on a controlled schedule.

Multisite can be useful in certain environments where you have a very large number of copies of the same code, e.g. separate live sites that want to share the same opcode cache.  For simpler setups, it's easier to stick with single codebases for each environment.