Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time


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.