diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5cd143d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+packages
+pubspec.lock
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/CHANGELOG.md
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..b490318
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,26 @@
+Copyright 2014, the shelf_proxy authors. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+    * Neither the name of Google Inc. nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/README.md
diff --git a/lib/shelf_proxy.dart b/lib/shelf_proxy.dart
new file mode 100644
index 0000000..3c7f8bf
--- /dev/null
+++ b/lib/shelf_proxy.dart
@@ -0,0 +1 @@
+library shelf_proxy;
diff --git a/pubspec.yaml b/pubspec.yaml
new file mode 100644
index 0000000..8e6eb12
--- /dev/null
+++ b/pubspec.yaml
@@ -0,0 +1,15 @@
+name: shelf_proxy
+version: 0.0.1-dev
+author: Kevin Moore <github@j832.com>
+description: Shelf handlers to proxy requests to other HTTP servers
+environment:
+  sdk: '>=1.0.0 <2.0.0'
+dependencies:
+  http_parser: '>=0.0.2+2 <0.1.0'
+  mime: '>=0.9.0 <0.10.0'
+  shelf: '>=0.5.3 <0.6.0'
+dev_dependencies:
+  hop: '>=0.30.4 <0.32.0'
+  hop_unittest: '>=0.1.0 <0.2.0'
+  path: '>=1.1.0 <2.0.0'
+  scheduled_test: '>=0.11.0 <0.12.0'
diff --git a/test/harness_console.dart b/test/harness_console.dart
new file mode 100644
index 0000000..d04e002
--- /dev/null
+++ b/test/harness_console.dart
@@ -0,0 +1,7 @@
+library shelf_proxy.harness_console;
+
+import 'package:scheduled_test/scheduled_test.dart';
+
+void main() {
+  groupSep = ' - ';
+}
diff --git a/tool/hop_runner.dart b/tool/hop_runner.dart
new file mode 100644
index 0000000..262c863
--- /dev/null
+++ b/tool/hop_runner.dart
@@ -0,0 +1,30 @@
+library hop_runner;
+
+import 'dart:async';
+import 'dart:io';
+import 'package:hop/hop.dart';
+import 'package:hop/hop_tasks.dart';
+import 'package:hop_unittest/hop_unittest.dart';
+
+import '../test/harness_console.dart' as test_console;
+
+void main(List<String> args) {
+  addTask('test', createUnitTestTask(test_console.main));
+
+  //
+  // Analyzer
+  //
+  addTask('analyze_libs', createAnalyzerTask(_getLibs));
+
+  addTask('analyze_test_libs', createAnalyzerTask(
+      ['test/harness_console.dart']));
+
+  runHop(args);
+}
+
+Future<List<String>> _getLibs() {
+  return new Directory('lib').list()
+      .where((FileSystemEntity fse) => fse is File)
+      .map((File file) => file.path)
+      .toList();
+}
