> HAMMERCLI_

The engine for Agents and Automation.

Same build engine that powers the Mac app.
Purpose-built for scripts, CI pipelines, and AI agents.

hammer — zsh — 80×24
$ hammer doctor

Environment
   macOS 15.2 (Sequoia)
   Hammer CLI v2.0.0
   Xcode Command Line Tools installed

Project: portfolio-site
   hammer.json found
   content.config.json valid
   3 collections configured
   47 content files parsed
   0 validation errors

All checks passed.

$ _
$ brew install hammercli
or install via the Hammer app
Read the docs

> Every command. JSON‑ready.

Structured output for every operation. Parse it, pipe it, automate it.

build
$ hammer build --mode export

 Parsing 47 content files…
 Resolving 12 relations…
 Compiling templates…
 Processing CSS (nesting, prefix)…
 Writing 63 files to /Build

✓ Build complete in 240ms

hammer build

Headless compilation. Same engine, same output as the GUI. Deterministic builds every time.

check
$ hammer check --strict --format json

{
  "status": "pass",
  "collections": {
    "posts":   { "valid": 12, "errors": 0 },
    "authors": { "valid": 3,  "errors": 0 }
  }
}

hammer check

Validate content against governance rules before anything ships. Required fields, slug format, relations—all verified.

info
$ hammer info --format json

{
  "project": "portfolio-site",
  "engine":  "2.0.0",
  "collections": 3,
  "content_files": 47,
  "templates": 8,
  "output_dir": "./Build"
}

hammer info

Inspect any project programmatically. Feed structure data to AI agents, build scripts, or monitoring dashboards.

doctor
$ hammer doctor

 macOS 15.2
 CLI v2.0.0
 Xcode CLT installed
 hammer.json found
 Build engine ready

Environment healthy.

hammer doctor

Pre-flight checks before any build. Verify environment, project config, and dependencies in one command.

--format jsonMachine-readable output
--strictWarnings become errors
--quietExit codes only
--parallelNo global state

> AI generates. Hammer validates. CI ships.

The CLI is the bridge between content creation and production.

AI Agent
Generates 12 blog posts from content plan
hammer check
Validates schema, fields, slugs, relations
hammer build
Compiles site — HTML, CSS, content
CI / Deploy
Ships to Forge. No human touched the GUI.
ci-pipeline.sh
#!/bin/bash
# Automated content pipeline

echo "Validating content..."
hammer check --strict --format json
exit_code=$?

if [ $exit_code -ne 0 ]; then
  echo "Content validation failed"
  exit 1
fi

echo "Building site..."
hammer build --mode export --output ./dist

echo "Deploying to Forge..."
forge deploy ./dist --environment production

✓ Pipeline complete
exit 0

Deterministic

Same input, same output. Every time. Standard exit codes CI systems already understand.

--parallel

No global state

No lockfiles, no shared state. Run concurrent builds across a portfolio of sites without conflicts.

--format json

Machine-native

Every command outputs structured JSON. Parse it, pipe it, feed it to the next step in your pipeline.

> Get started in 30 seconds.

.github/workflows/build.yml
name: Build & Deploy
on: [push]

jobs:
  build:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Hammer CLI
        run: brew install hammercli

      - name: Validate content
        run: hammer check --strict

      - name: Build site
        run: hammer build --mode export

      - name: Deploy to Forge
        run: forge deploy ./Build

One engine. Two interfaces.
Choose how you build.

Because we bloody love the Native Web

HTML, CSS, and JavaScript are powerful, misunderstood, and don't need another framework.

Hammer is a native macOS app for building production‑ready static sites — includes, templates, content collections, live reload, and nothing you don't need.

Hammer for Mac
Build Settings

The tools HTML deserves.

Includes

Split your site into reusable components. Headers, footers, navs — write once, include everywhere. Your markup stays DRY without a framework.

Learn about includes →
index.html
<!-- @include _header.html -->
<!-- @include _nav.html -->

<main>
  <h1>Welcome</h1>
</main>

<!-- @include _footer.html -->

Template Engine

Conditionals, loops, and logic — real HTML composition without adopting a framework. Build dynamic pages from simple, readable tags.

Explore templates →
page.html
<!-- @if showBanner -->
  <div class="banner">Welcome!</div>
<!-- @endif -->

<!-- @loop item in nav -->
  <a href="<!-- @item.url -->">
    <!-- @item.name -->
  </a>
<!-- @endloop -->

Placeholders

Generate placeholder images at build time. Set dimensions, colours, text, and services — perfect for prototyping layouts before assets are ready.

See placeholder options →
index.html
<img src="<!-- @placeholder 800x400 -->"
     alt="Hero image">

<img src="<!-- @placeholder 300x300
     service=picsum -->"
     alt="Photo">

<img src="<!-- @placeholder 400x200
     bgColor=2563eb
     text=Coming+Soon -->"
     alt="Banner">

Clever Paths

Reference any asset by name — Hammer finds it, resolves the path, and links it correctly in your build. No more broken references.

Explore clever paths →
index.html
<img src="<!-- @path logo.png -->"
     alt="Logo">

<!-- @stylesheet style.css -->

<!-- @javascript app.js -->

Navigation Helpers

Hammer automatically adds current and current‑parent classes to your nav links. Style active states without a line of JS.

How navigation works →
build output
<nav>
  <a href="/">Home</a>
  <a href="/about/"
     class="current">About</a>
  <a href="/docs/"
     class="current-parent">Docs</a>
</nav>

Variables

Define variables once, use them everywhere. Site names, meta tags, repeated values — change in one place, update across your entire site.

Learn about variables →
_head.html
<!-- @var siteName = "My Site" -->
<!-- @var author = "Beach" -->

<title><!-- @siteName --></title>
<meta name="author"
      content="<!-- @author -->">
<link rel="canonical"
      href="<!-- @siteUrl -->">

Content without the database.

Manage blog posts, docs, and structured content with Markdown and YAML. Schemas, relations, field validation — no server, no runtime.

content/posts/hello-hammer.md
---
title: "Hello Hammer"
date: 2026-03-01
author: "authors/leon"
tags: ["hammer", "native-web"]
published: true
---

Building for the native web means
respecting what HTML, CSS, and
JavaScript already give you.

Hammer compiles your content into
clean, static pages — no runtime,
no database, no dependencies.
templates/post.html
<article>
  <h1><!-- @title --></h1>
  <time><!-- @date --></time>
  <p class="author">
    By <!-- @author.name -->
  </p>

  <div class="content">
    <!-- @body -->
  </div>
</article>

Collections

Organize content into typed collections — posts, authors, pages, docs. Each with its own schema and output path.

Relations

Link authors to posts, categories to pages. Hammer resolves references automatically so templates access related data.

Validation

Define required fields, types, and formats. Hammer warns on missing data before you build — not after you ship.

Flat files

Everything is Markdown and YAML on disk. Version it with Git, edit in any tool, deploy anywhere. No vendor lock‑in.

Your AI already knows Hammer.

Hammer ships with Cursor rules, VS Code configuration, and project context files — so AI agents understand how to build Hammer sites without being taught.

The native web is the ideal substrate for human‑AI collaboration. HTML, CSS, and JavaScript are readable, well‑documented, and universal — the languages that both humans and AI write best.

No framework abstractions to decode. No proprietary template syntax to learn. Hammer enhances the web platform — it doesn't replace it.

One-click deploy to production

Production-ready hosting powered by Forge

Forge provides global CDN hosting with automatic HTTPS, staging environments, and custom domains — all managed from a single click inside Hammer.

Forge UI
Swift

Built with Swift. No Electron. No compromise.

Human
Agent