A web service specification compiler that generates implementation and tests.

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

GPL-3 licensed by Santiago MunĂ­n
Maintained by santimunin@gmail.com

Harmony Hackage version Build Status

Harmony is a web service specification compiler that generates implementation (server and client) and tests.

Targets supported

  • Server * Node.js (-sjs)
  • Client + Python (-cpython) + Includes Hypothesis based tests. + Java (-cjava)


  • From Hackage: cabal install harmony
  • From source code: git clone https://www.github.com/SantiMunin/harmony && cd harmony && cabal install


After installing the package (cabal install), you will get the harmony executable. Afterwards:

Usage: harmony [OPTION...] input_file
  -c[CLIENTS]     --client[=CLIENTS]         Desired output for the client: {-cpython, -cjava}
  -s[SERVERS]     --server[=SERVERS]         Desired output for the server: {-sjs}
  -o[OUTPUT_DIR]  --output_dir[=OUTPUT_DIR]  Output path

Check the Targets supported section to figure out the code related to each target. Also, refer to the wiki for more information.


The input file should follow the syntax specified in language_spec/Language.cf. Example:

service_name: HouseworkService
service_version: 1.0.0

enum Color { RED, BLUE, BLACK }

struct Task {
   // Primary key
   name : String,
   color : Color

struct Person {
  name: String,
  age: Int,
  tasks: [Task]

resource Person ("/person")


See the wiki.

Used by 1 package:
comments powered byDisqus