Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

The Marmalade Service - A package repository in EmacsLisp

This is an EmacsLisp package to reimplement the marmalade-repo with Elnode. Natalie Weizenbaum wrote the original marmalade-repo with node.js and mongodb.

How to

  • Need an account? - make an issue on the Github and Nic will send you a mail with a confirmation link
  • Need to delete a package? - it's possible through the API with the marmalade-client package
  • Need to upload a package? - use the API throught the marmalade-client package


This reimplementation uses an Elnode application dealing with a filesystem of all packages. It's basically a file server app. It also follows the microservice model.

This packages includes conversion tools from the mongodb to the filesystem.

These are the things marmalade should do:

  • construct the package archive file from the package directory structure
    • the package archive is an index of all the packages in the repository.
  • allow the archive to be updated with uploads
  • provide the ELPA /package/ HTTP API for downloading packages
  • provide HTML front end to the /package/ HTTP API
  • provide EmacsLisp front end to the /package/ HTTP API
    • this will likely be a separate project
  • allow users to /register/ in order to upload packages
  • provide /profile/s for people who have registered
  • allow registered users to upload and upgrade packages
    • preferably from inside their emacs
    • and securely
  • allow registered users to be added as owners

Other marmalade things

It would be nice if marmalade provided better package discovery.

It would be nice if marmalade stored licences in a clear way and allowed you to use only safe licences if you wish.

How it works

The package is contained in the top level. Elpakit is used to build it.

marmalade-repo-test is a test directory containing packages used by the test scripts.

marmalade-repo-test/possible-packages contains stuff we don't have tests for but probably should have.


emacs-lisp version of the marmalade package repository






No releases published


No packages published