<commit_before>omnitruck
- ruby scaffolding
- shared config
- shared env vars

omnitruck-poller
- depends on omnitruck
- runs poller service

omnitruck-web
- depends on omnitruck
- runs unicorn service

omnitruck-web-proxy
- unicorn nginx config
- used by omnitruck-web service

build 'em all; start 'em all

They'll work it out

Local testing:
- enter studio
- run `/habitat/go.sh`
- `hab pkg exec core/curl curl 0.0.0.0:80/stable/automate/versions` (and the like)<commit_msg>Update habitat docs.<commit_after># omnitruck-app
- ruby scaffolding
- shared config
- shared env vars

Install core Omnitruck Sinatra application and shared files

# omnitruck-poller
- depends on omnitruck-app for shared code and configuration
- runs poller service

Polls packages.chef.io periodically to scrape package properties to generate
package metadata json files used to respond to queries.

# omnitruck-web
- depends on omnitruck-app
- runs unicorn service

Provides Unicorn HTTP server and exposes a Unix and TCP socket.

# omnitruck-web-proxy
- depends on omnitruck-web
- unicorn nginx config

Provides Nginx proxy for connection routing and caching, and connects to the
omntruck-web unix socket.

## Testing

Local testing:
- enter studio
- Execute `scripts/hab-it`
- `hab pkg exec core/curl curl "http://0.0.0.0/stable/automate/versions"`
- `hab pkg exec core/curl curl "http://0.0.0.0/_status"`
{'fraction_non_alphanumeric': 0.08002883922134102, 'fraction_numerical': 0.010093727469358327, 'mean_word_length': 3.974910394265233, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 3, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6092887', 'n_tokens_mistral': 479, 'n_tokens_neox': 431, 'n_words': 162}