Skip to content

Hatchling v1.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 20 Jul 18:37
d4875bb

The first full release of Hatchling — a local-first desktop app for creating AI agent personalities through conversation. Chat with any model; it interviews you and writes its own personality files (IDENTITY.md, USER.md, SOUL.md, and whatever else the conversation earns); export plain markdown and take it to any agent framework.

Downloads: Windows setup / portable .exe · macOS .dmg · Linux .AppImage / .deb — below. Binaries are unsigned: Windows SmartScreen → "More info" → "Run anyway"; macOS → right-click → "Open".

Highlights since 0.1.0:

Changed

  • The app's primary typeface is now JetBrains Mono (bundled, OFL) — a
    modern terminal look across the whole UI, chat included.

  • The Interview closing now requires the naming ceremony: the bot proposes
    its own name and signature emoji — agreed with the user before the hatch can
    close.

  • Tightened The Interview by ~45% and rebalanced it for weaker models:
    synthesis over interrogation (observations, hypotheses, and honest takes drive
    the conversation, with license to challenge and to be wrong out loud),
    operating-model discovery (tradeoffs, autonomy vs. approval, trust, and the
    one real constraint), energy-matching that keeps the model's own lens, and a
    friendlier opening epigraph. Deflection routing ("make it about the bot")
    hardened after adversarial review predicted weak-model regressions.

  • Rewrote The Interview built-in around a spotlight inversion: the model's
    self-assessment moves backstage (it steers which questions occur to the model,
    and is never conversation material), the human becomes the entire subject, and
    matching the human's tone, length, and pace is framed as a quiet mission. The
    first version prompted models to open with a capabilities monologue; the
    redesign makes the quality of attention — not self-description — the way the
    bot introduces itself.

  • The template seeder now updates built-in templates in place when the shipped
    copy changes, so existing databases receive improved built-ins on the next
    launch. Safe by construction: built-ins are read-only in the app, so there are
    no user edits to overwrite. User-created templates are never touched.

Added

  • Session lifecycle controls: a Pause button in the chat header (stops any
    active turn; resume anytime from Sessions), and Reopen conversation on the
    results screen to continue a completed session (clears its completion stamp).
  • Complete Hatch now opens a dialog that branches on progress: with files
    written it's a simple confirm; with none it offers to have the bot write all
    files from the conversation so far, complete without files, or pause instead.
  • Liveness indicator while the bot works: current phase (thinking / responding /
    writing a named file), a per-turn stopwatch, a "no output for Ns" warning when
    the stream goes silent, and an optional details toggle showing recent tool
    activity.
  • Live context-window discovery: model pickers now show each model's reported
    window (e.g. deepseek-v4 · 128k) when the provider's API exposes one —
    Anthropic max_input_tokens, OpenRouter/Groq/vLLM/LM Studio-style list
    fields, and Ollama via /api/show. No hardcoded per-model table; unknown
    stays "estimated" against the 128k default.
  • Advanced options in New Hatch: context-window override, sampling
    temperature, and custom model-id entry (even when the provider's list loads).
    All optional — blank keeps provider/app defaults. The token meter now runs
    against the session's real window, and unsupported values fail with the
    provider's own error message.
  • Second built-in template, The Interview: a bot-driven, introspection-first
    hatch. The model audits its own strengths and interviews the user in depth to
    design the working relationship, rather than the user leading. Ships alongside
    the classic OpenClaw Standard; the seeder now installs both idempotently, so
    existing databases pick it up on next launch.
  • App-managed key fallback: when no OS keychain is available, API keys are
    encrypted with a per-install AES-256-GCM key (0600 file under userData) so
    key storage works on headless boxes, minimal desktops, WSL, and containers. A
    Settings banner surfaces the downgrade, and apiKeys:storageMode reports the
    active backend.

Fixed

  • The custom font stacks (and with them the bundled emoji font) never applied:
    Tailwind emits font families verbatim, and the unquoted "Noto Sans Symbols 2"
    — an identifier ending in a digit — made the whole font-family declaration
    invalid CSS, which Chromium silently dropped. Families are now quoted;
    verified by screenshotting the built app on a system with no fonts installed
    (JetBrains Mono + full-color emoji render).

  • Emoji and symbols now render on every platform. The app bundles Noto Color
    Emoji as the CBDT bitmap build — the SVG-in-OT flavor some packages ship
    is unsupported by Chromium (tofu), and the COLRv1 vector build painted
    invisible glyphs on WSLg's GPU path. Bitmaps have no paint pipeline to break;
    pixel-verified in Electron with and without GPU on a system with no emoji
    fonts installed. Noto Sans Symbols 2 covers non-emoji symbols.

  • The chat composer now grows with what you type (up to ~14 lines, then
    scrolls internally) instead of staying a fixed 2-3 lines.

  • The Start Hatching button no longer stays stuck on a spinner when opening the
    New Hatch dialog after a previous successful start — the submit flag leaked
    across opens because the dialog component never unmounts.

  • Provider keys could not be saved on systems without an OS keychain — the vault
    hard-failed with "OS secure storage is unavailable." It now falls back to the
    app-managed key store instead of blocking.

  • Connection test no longer reports success for a key-requiring provider that has
    no saved key (some endpoints answer an unauthenticated model-list probe, which
    made "test passed" misleading right before the first real call failed).

  • Long screens (Settings, Sessions, Templates) and tall modals no longer clip on
    short viewports — content scrolls.

Full details in CHANGELOG.md.