diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright (c) 2012, Hideyuki Tanaka
+
+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 Hideyuki Tanaka nor the names of other
+      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/Network/Wai/Application/Dynamic.hs b/Network/Wai/Application/Dynamic.hs
new file mode 100644
--- /dev/null
+++ b/Network/Wai/Application/Dynamic.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE RecordWildCards #-}
+
+module Network.Wai.Application.Dynamic (
+  Config(..),
+  warpd,
+  
+  def, nullApp,
+  ) where
+
+import qualified Config.Dyre as Dyre
+import Data.Default
+import Data.Monoid
+import Network.HTTP.Types
+import Network.Wai
+import Network.Wai.Handler.Warp
+
+-- | HTTP config
+data Config
+  = Config
+    { warpSettings :: Settings    -- ^ Warp settings
+    , application  :: Application -- ^ Application to serve
+    }
+
+instance Default Config where
+  def = Config
+    { warpSettings = defaultSettings
+    , application = nullApp
+    }
+
+-- | Null application (always returns 404)
+nullApp :: Application
+nullApp _ = return $ ResponseBuilder status404 [] mempty
+
+-- | dynamic warp app
+warpd :: Config -> IO ()
+warpd = Dyre.wrapMain $ Dyre.defaultParams
+  { Dyre.projectName = "warpd"
+  , Dyre.realMain = realMain
+  , Dyre.showError = \_ err -> error err
+  }
+
+realMain :: Config -> IO ()
+realMain Config {..} = do
+  runSettings warpSettings application
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/app/Main.hs b/app/Main.hs
new file mode 100644
--- /dev/null
+++ b/app/Main.hs
@@ -0,0 +1,4 @@
+import Network.Wai.Application.Dynamic
+
+main :: IO ()
+main = warpd def
diff --git a/config/warpd.hs b/config/warpd.hs
new file mode 100644
--- /dev/null
+++ b/config/warpd.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+import Network.Wai.Application.Dynamic
+import Network.Wai.Application.Static
+
+main :: IO ()
+main = warpd def
+  { application = staticApp defaultFileServerSettings
+  }
diff --git a/warp-dynamic.cabal b/warp-dynamic.cabal
new file mode 100644
--- /dev/null
+++ b/warp-dynamic.cabal
@@ -0,0 +1,33 @@
+name:                warp-dynamic
+version:             0.0.1
+synopsis:            Dynamic configurable warp HTTP server
+
+description:         Dynamic configurable warp HTTP server
+
+homepage:            http://tanakh.jp
+license:             BSD3
+license-file:        LICENSE
+author:              Hideyuki Tanaka
+maintainer:          Hideyuki Tanaka <tanaka.hideyuki@gmail.com>
+copyright:           (c) 2012, Hideyuki Tanaka
+category:            Network
+build-type:          Simple
+cabal-version:       >=1.8
+
+extra-source-files:  config/warpd.hs
+
+library
+  build-depends:       base           == 4.*
+                     , data-default
+                     , dyre           == 0.8.*
+                     , http-types     == 0.6.*
+                     , wai            == 1.1.*
+                     , warp           == 1.1.*
+
+  exposed-modules:     Network.Wai.Application.Dynamic
+
+executable warpd
+  hs-source-dirs:      app
+  main-is:             Main.hs
+  build-depends:       base           == 4.*
+                     , warp-dynamic
