Install Hamen Markup 1.0.0
Hamen Markup runs locally with Python 3.12 or later. The compiler and notes editor are free under the MIT license. There is no account requirement. Installation downloads Python dependencies; writing and compiling use local files.
Install the release
Create an environment using your Python 3.12+ installation:
python3 -m venv .venv
On macOS or Linux, activate it with source .venv/bin/activate. On Windows PowerShell, use .venv\Scripts\Activate.ps1; alternatively run .venv\Scripts\python.exe and .venv\Scripts\hmk.exe directly without activating.
python -m pip install https://hamen.dev/markup/releases/1.0.0/hamen_markup-1.0.0-py3-none-any.whl
hmk --version
hmk edit my-notes.hmn
Open the local address printed by hmk edit. Type in the source pane; the preview updates while you write. Save explicitly with the editor Save action. A recovered browser draft is not a saved file. If another program changes the file, the editor preserves your draft and reports a conflict.
The wheel bundles fonts, mathematics, pagination, and 3D browser libraries. Node.js is not required to use it. The editor is a local web application; this release does not include a native desktop installer or cloud synchronization.
Your first note
Save this as my-notes.hmn:
# Newton's [[second]] law
Force depends on ==mass== and **acceleration**.
:::box Remember
@Calc[F = m * a]
:::
:::aside Units
Force is measured in newtons.
:::
- [ ] Work through an example
- [x] Define each quantity
hmk check my-notes.hmn
hmk build my-notes.hmn -o output/my-notes.html
hmk serve my-notes.hmn
An HTML export needs both the .html file and its adjacent .assets directory. Keep them together when moving or publishing the document.
PDF export
Install the PDF extra and Chromium once. This requires an Internet connection and additional disk space:
python -m pip install 'hamen-markup[pdf] @ https://hamen.dev/markup/releases/1.0.0/hamen_markup-1.0.0-py3-none-any.whl'
python -m playwright install chromium
hmk build my-notes.hmn -o output/my-notes.pdf
On a minimal Linux machine, Playwright may require operating-system packages: python -m playwright install --with-deps chromium. Review that command's system-package changes before running it on a shared machine.
PDF rendering uses local bundled assets and blocks external network requests. Inspect the final PDF when using complex tables, grids, page masters, or custom fonts. See supported behavior and limits.
Chemical structures
Math, chemistry notation, and quantities work in the base installation. Rendering SMILES molecular structures requires RDKit:
python -m pip install 'hamen-markup[science] @ https://hamen.dev/markup/releases/1.0.0/hamen_markup-1.0.0-py3-none-any.whl'
RDKit and Chromium availability depend on the Python version and operating system. Python 3.12 on macOS arm64 is the release validation environment. CI configuration also exercises Python 3.12 and 3.13; a configured CI job is not evidence of a completed remote run.
Verify and upgrade
Download SHA256SUMS from the versioned release directory. Compare your downloaded wheel with shasum -a 256 filename.whl on macOS, sha256sum filename.whl on Linux, or Get-FileHash filename.whl -Algorithm SHA256 in PowerShell. The signed product release identifies the release inventory and its checksum.
Install a later version into a separate environment first, run hmk check on your notes, and compare important PDF exports before replacing your environment. Source files are plain UTF-8 text. See the compatibility policy.
Troubleshooting
| Symptom | Action |
|---|---|
hmk is not found |
Activate the environment or use its bin/hmk / Scripts/hmk.exe directly. |
| Unsupported Python | Install Python 3.12 or newer and recreate the environment. |
| HMK511 / HMK512 | Install the PDF extra and Chromium in the same environment as hmk. |
| HMK302 | Keep imports and assets inside the selected --root directory. |
| Preview displays an error | Fix the reported source line. The editor can retain the last valid preview; CLI checking is strict. |
| Save conflict | Download your draft or copy it elsewhere, reload the changed file, and merge the changes. |
| Port is occupied | Choose hmk edit my-notes.hmn --port 8768. |