Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
examples many commands to return list of Maybes
.gitignore Ignore build files
LICENSE add senseless license file
README.rst add configuration details
montage-client.cabal pull nitro forwards and bump the version
montage-client.proto remove more dependencies


Haskell Client for Montage


Built and tested with ghc 7.4.1

Install the non-hackage dependencies:

git clone
cd StatsWeb && cabal install

git clone
cd riak-haskell-client && cabal install

From montage-haskell-client/ execute:

cabal install

We recommend using a sandbox, hsenv is particularly good.

To setup montage itself, see


The montage proxy is port configurable (here given the Config handle set to 7078), with riak running on 8087:

import Network.Riak (defaultClient, connect, disconnect, Client(port), Connection)
import Data.Conduit.Pool (Pool, createPool)

import Network.Riak.Montage

main :: IO ()
main = do
    mainPool <- createPool
        (connect $ defaultClient {port = "8087"})
        1 -- stripes
        10 -- timeout
        300 -- max connections

    let cfg' = cfg { proxyPort = 7078 }

    runDaemon (cfg' :: Config ResObject) mainPool

See montage for how to define resolutions for a resolution object (ResObject), which is also required to start the proxy.

Your client's request pool must connect (not bind) to that port:

import Data.Conduit.Pool (Pool, createPool)
import System.ZMQ as ZMQ

import Network.Riak.MontageClient

montageZpool <- createPool (do
    s <- ZMQ.socket ctx Req
    ZMQ.connect s "tcp://localhost:7078"
    return s
    ) ZMQ.close 1 5 1

let (bucket, key) = ("u-info", "1")
resp <- montageGet montageZpool bucket key

See Examples and More for full documentation of client requests.


To setup the examples, first download hprotoc:

cabal install hprotoc

Then execute:

cd examples && hprotoc user.proto

You must have montage installed to run the basic proxy which the examples talk with. In your external montage/ directory:

cd examples && runhaskell basic_proxy.hs

See for more on the montage haskell setup.

To run the examples, in examples/ execute:

runhaskell Resolution.hs -- a basic last write wins resolution
runhaskell Delete.hs -- tests a delete after a put
runhaskell Many.hs -- asserts the identity of put many -> get many
runhaskell Reference.hs -- a basic, multi-target reference get


See the haddock documentation for type-signatures, descriptions, and source of client functions.

Something went wrong with that request. Please try again.