npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

draftmora

v0.1.2

Published

Local-first AI agent board with chat, SQLite storage, and OpenAI account auth.

Downloads

45

Readme

Draftmora

CI npm License: MIT Node.js 24 recommended TypeScript SQLite OpenAI account auth Local-first

Draftmora app preview

Messy ideas in. Clear tasks out.

Draftmora is a local-first AI agent board for people who want AI help inside their own task workflow, not another hosted project-management system. Capture rough notes, turn them into structured tasks, chat with the agent, and keep execution history next to the work.

The app runs on your machine, stores board data in SQLite, and can use OpenAI through account auth or a local API key when a task needs execution help. With account auth, eligible OpenAI accounts can connect from Settings instead of pasting an API key.

Why Draftmora

  • Start with messy notes and finish with a status-aware task board.
  • Use agent chat to propose task changes before anything is applied.
  • Keep project data local by default in SQLite and plain memory files.
  • Connect OpenAI from the app when account auth is available, or use an API key.
  • Prepared with a real npm CLI, Fastify API, React UI, and CI validation.

Highlights

  • Local-first AI agent board with SQLite storage.
  • Task status, priority, focus area, tags, and execution history.
  • OpenAI account auth through the app settings, with API-key fallback.
  • Agent chat with task proposals and explicit memory writes.
  • Durable local memory files: USER.md and MEMORY.md.
  • React, Vite, TypeScript, Fastify, shadcn/Radix UI, and Vitest.

How It Works

  1. Capture rough work as a draft.
  2. Add priority, focus area, tags, and notes.
  3. Ask the agent to break down work, propose next tasks, or plan follow-ups.
  4. Approve proposed changes explicitly and track execution history on the board.

Requirements

  • Node.js 24 is recommended. Node.js 22.14 or newer remains supported.
  • npm 11 or newer.
  • Optional: an OpenAI account connection for supported account-auth models, or OPENAI_API_KEY for API-key backed task execution.

Quick Start

Run from npm:

npx draftmora

Then open http://127.0.0.1:4141.

Or run from a local checkout:

git clone https://github.com/afurm/draftmora.git
cd draftmora
npm install
npm run dev

Open http://localhost:5173.

The API runs on http://127.0.0.1:4141 by default. Local board data is stored in ./data/board.db.

Configuration

Copy .env.example to .env when you need local overrides:

cp .env.example .env

Example local override:

WEB_PORT=3000
API_PORT=3001
BOARD_DB_PATH=./data/board.db
OPENAI_API_KEY=
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_ORG_ID=
OPENAI_PROJECT_ID=

WEB_PORT controls the Vite dev and preview server. API_PORT controls the Fastify API and the packaged npx draftmora server. Without these variables, the dev web server uses 5173 and the API uses 4141. The older PORT variable still works as an API port fallback when API_PORT is not set.

Open Settings in the app to choose an auth mode:

  • OpenAI account auth: connect an eligible OpenAI account/subscription from the app, without pasting an API key.
  • API-key mode: save a key locally or provide OPENAI_API_KEY through the environment.

The OpenAI settings screen also supports advanced request controls for model behavior and transport: max output tokens, temperature, reasoning effort, reasoning summaries, text verbosity, request timeout, retries, retry delay, prompt cache retention, and Codex transport. In API-key mode you can also set OpenAI organization/project headers in the app or through OPENAI_ORG_ID and OPENAI_PROJECT_ID.

API keys, OAuth tokens, SQLite databases, build output, and dependency folders should not be committed.

Checks

Run the same validation before opening a PR or pushing release changes:

npm audit
npm run typecheck
npm test
npm run build
npm pack --dry-run

npm Package

Draftmora is published on npm as draftmora. The package includes the built Fastify server and Vite client assets.

npx draftmora

Or install it globally:

npm install -g draftmora
draftmora

The package starts on http://127.0.0.1:4141 and stores data in ./data/board.db from the directory where the command is run. Set BOARD_DB_PATH when you want a fixed database location.

Changelog

Release notes are tracked in CHANGELOG.md.

Security Model

Draftmora is designed as a personal, local-first app. The Fastify API binds to 127.0.0.1 by default and assumes the local operator is trusted. Do not expose the API or Vite dev server to the public internet without a separate auth, firewall, VPN, or reverse-proxy policy.

Project memory is plain text in USER.md and MEMORY.md. Treat those files as local operator state and review them before publishing a branch.

Memory

Draftmora uses a built-in local memory pattern:

  • USER.md stores durable user preferences and profile facts.
  • MEMORY.md stores durable agent and project notes.
  • Entries are compact plain text separated with §.
  • There is no Memory page or dated memory log.
  • Chat turns run through an automatic durable-memory review; explicit "remember" requests are high-confidence save candidates, but memory is inferred from meaning rather than fixed wording.
  • Successful task executions also run the same fail-open memory review for durable project notes.
  • Memory review uses the selected OpenAI model, so there is no separate memory model setting to configure.

Development Notes

The interface is tuned for a dense SaaS dashboard workflow: left rail navigation, status-aware board columns, compact task cards, a responsive command header, and settings for focus areas.