Underwritten is a browser-first markdown editor with a companion MCP bridge. The web app owns the editor and workspace state. The published underwritten-mcp package lets external MCP clients connect to that live browser session through a local bridge process.
apps/website: the Underwritten web app and PWAapps/cli: theunderwrittenCLI for agent and terminal useapps/mcp: the publishedunderwritten-mcppackage
packages/underwritten-bridge: shared localhost bridge runtimepackages/underwritten-bridge-contract: shared bridge protocol types and helpers
Releases are currently handled manually by updating the version numbers in package.json files and pushing to main. CI will automatically detect new versions and publish them to npm via OIDC.
To publish manually from your local machine (requires npm login):
vp run publish-packagesInstall dependencies:
vp installRun the website:
vp run website#devRun the MCP bridge from source in another terminal:
vp dlx tsx apps/mcp/src/cli.tsRun formatting, linting, and type checks:
vp checkRun unit tests:
vp testRun end-to-end tests:
vp run test:e2eInstall Playwright browsers when needed:
vp run website#test:e2e:installBuild the monorepo:
vp run build -rMIT