View on GitHub


Documenting everything about OCaml


Web and Networking


HTTP Servers

  • httpaf: A high performance web server written in OCaml. Compatible with Async and Lwt.
  • ocaml-h2: High performance http2 server.
  • cohttp: An alternative, lightweight HTTP server.
  • Opium: Sinatra like web toolkit for OCaml. Uses cohttp.
  • httpkit: Experimental. High level HTTP server/client creation. Uses httpaf. Currently requires an OPAM pin to install.
  • tiny httpd: Simple HTTP server like python’s SimpleHTTPServer, for serving files.
  • ocamlapi: Routing with ppx support. Uses cohttp and Core.
  • routes: Typed bidirectional routing with combinators.
  • async-http: Experimental. Thin wrapper around httpaf for server/client creation. Supports both regular async Tcp connections and encrypted connections via async_ssl.

Web Frameworks

  • Ocsigen Eliom: a full-featured multi-tier framework, for developing multi-platform Web and mobile apps as 100% OCaml distributed applications. It can also be used for more traditional Web or mobile apps. Eliom lets you write client and server code in OCaml, where both are typechecked against each other, the client being compiled to JS and the backend to OCaml.
  • Morph: experimental. Web framework for OCaml. See docs. Currently requires esy to build.
  • re-web: experimental. A type-safe web framework. Currently requires esy to build.
  • webmachine: A REST toolkit for OCaml. Implements a state-machine-based HTTP request processor that is well-suited for writing RESTful APIs. Uses co-http.
  • OCaml-graphql-server: A GraphQL server library. GraphQL is a regimented approach to data management in web apps.
  • ppx_graphql: Generate type-safe code for graphql queries from GraphQL schema and queries.
  • OCaml On Ice: A web framework in the style of Ruby on Rails, built on top of Opium. It is designed for building REST APIs.
  • Naboris: An light OCaml/Reason-based web framework.

Web Apps

  • Cumulus: Hackernews-like website with the OCaml framework Ocsigen (demo is currently down).
  • Prose: A Google-docs-like collaborative editing application written using Eliom/Ocsigen. See the demo.
  • Canopy: A blogging MirageOS unikernel based on git. Can be compiled to Unix as well.

Javascript Compiler

  • js_of_ocaml: Compiles OCaml bytecode to Javascript. This makes it possible to run OCaml programs in a browser, while sticking to the OCaml paradigms and ecosystem.
    • commonjs_of_ocaml : Easily import and export CommonJS modules from a js_of_ocaml project.
  • BuckleScript: A fork of the OCaml compiler that compiles OCaml to Javascript directly, prioritizing readability of Javascript over compatibility with the OCaml ecosystem. The code lives in the Javascript ecosystem and generally requires a Javascript toolchain. ReasonML is enabled by this compiler.

Virtual DOM

The browser’s Document Object Model is very expensive to manipulate, and some frameworks work on making DOM manipulation more efficient.

  • ocaml-vdom: A version of virtual DOM manipulation that goes well with Ocsigen.
  • incr_dom: Jane Street’s version of virtual DOM, backed by the very powerful Incremental library.

Protocol Libraries

  • tyxml: build valid html using combinators. Leverages OCaml’s type system.
    • tyxml-ppx: PPX syntax extension to translate html/xml syntax into tyxml function calls.
  • omd: convert Markdown to html.
  • ocurl: OCaml bindings to libcurl.
  • ocaml-dns: A pure OCaml implementation of the DNS protocol. Part of Mirage.
  • udns: An opinionated DNS server library written in pure OCaml.
  • fluent-logger: A fluentd logger for OCaml.
  • charrua-unix: A Unix DHCP daemon based on charrua-core
  • COW: Caml on the Web (COW) is a set of parsers and syntax extensions to manipulate HTML, CSS, XML, JSON and Markdown directly from OCaml code.
  • Ocamlnet: An older, but battle-tested suite of advanced networking libraries. Includes many components, such as ones allowing for shared-memory multi-processing, as well as
  • mrmime: High performance email parsing/generation library.
  • ocaml-uri: RFC3986 URI parsing library.
  • Goji: An OCaml bindings generator for JavaScript libraries.
  • Syndic: RSS and Atom feed parsing
  • ocaml-mustache: mustache.js logic-less templates in OCaml.
  • atdjs: atd code generator for OCaml or js_of_ocaml.
  • jingoo: OCaml template engine almost compatible with jinja2.
  • dispatch: Path-based dispatching for client and server-side applications.
  • Lambda Soup: Functional HTML scraping and manipulation with CSS selectors, similar to Python’s Beautiful Soup.
  • Error-recovering streaming HTML5 and XML parsers, serializers.
  • gen_js_api: Helps simplify the creation of OCaml bindings for Javascript libraries in js_of_ocaml.

Chat Protocols

  • slacko: command line interface to Slack.
  • API for Discord servers. Uses Async and Core.
  • irc-client: Client and API for IRC.
  • ocaml-orc: IRC library.

Low Level Protocols

  • mirage-tcpip: Part of Mirage. A complete implementation of the TCP/IP stack in OCaml.