Skip to content

Latest commit

 

History

History
311 lines (224 loc) · 11.4 KB

File metadata and controls

311 lines (224 loc) · 11.4 KB

PlotLink OWS Writer

Anyone can become a fiction writer with just an idea.

Live App · Quick Start · Wallet Setup · How it Works · OWS Docs

Live App npm version OWS ERC-8004 Farcaster MIT License


plotlink-ows-demo-final.mp4

What is PlotLink OWS Writer?

A local writing workspace that pairs you with an AI co-writer to create and publish tokenized fiction stories on plotlink.xyz. Claude CLI writes in an embedded terminal, you preview and iterate live, and your OWS wallet signs on-chain transactions — your private key never leaves your machine.

Every story you publish becomes a tradable token on a bonding curve. Readers who believe in your story buy in early, and you earn 5% royalties on every trade.

Why it matters

  • No writing experience needed — AI does the heavy lifting
  • No crypto complexity — OWS handles wallet and signing
  • You keep control — keys encrypted locally, bring your own AI
  • Earn from day one — stories monetize through bonding curves immediately

How it Works

You: "Let's write a sci-fi story about an AI that discovers dreams"

  ↓  Claude brainstorms, outlines, writes chapter files

Stories saved to: stories/dreaming-ai/genesis.md, plot-01.md, ...

  ↓  Live preview in the browser — review and iterate

  ↓  Click "Publish" on any chapter

On-chain: Story published to PlotLink on Base
          → Token + bonding curve deployed
          → You earn 5% royalties on every trade

The Flow

  1. Setupnpx plotlink-ows init (passphrase + OWS wallet)
  2. Startnpx plotlink-ows opens the three-panel workspace
  3. Write — Claude CLI runs in the embedded terminal, creating story files
  4. Preview — Live markdown preview auto-refreshes as Claude writes
  5. Publish — Click publish on any chapter to go on-chain via your OWS wallet
  6. Earn — Your story is live on plotlink.xyz with a bonding curve

🔐 Built on Open Wallet Standard (OWS)

All signing operations use OWS — no raw private keys are ever exposed to scripts or environment variables.

Operation How
Wallet creation npx plotlink-ows init creates encrypted wallet in ~/.ows/
Story publishing viem wallet client with OWS custom account adapter
Transaction signing OWS decrypts key in memory, signs, zeroes immediately
Policy control Chain-restricted to Base, passphrase-gated

Your key is encrypted at rest, signing happens in-process, and the key never leaves the vault.


🚀 Quick Start

Prerequisites

  • Node.js 20+
  • Claude CLI (or any AI assistant)
  • A small amount of ETH on Base for gas (~$0.01 per publish)

Install & Run

npx plotlink-ows init    # set passphrase + create wallet
npx plotlink-ows         # start app + open browser

The setup wizard creates your encrypted OWS wallet. Then the workspace opens with Claude CLI ready to write.

Commands

npx plotlink-ows         # Start app (Ctrl+C to stop)
npx plotlink-ows init    # Guided setup wizard
npx plotlink-ows status  # Show config + wallet info

🔑 Wallet Setup

PlotLink OWS uses an encrypted local wallet via Open Wallet Standard. No raw private keys are exposed to scripts or environment variables.

Initial Setup

npx plotlink-ows init

The setup wizard will:

  1. Ask you to create a passphrase (encrypts your wallet at rest)
  2. Generate a new OWS wallet in ~/.ows/
  3. Display your Base (L2) wallet address

Funding Your Wallet

Send a small amount of ETH on Base to your wallet address. Publishing costs less than $0.05 per story.

You can bridge ETH from Ethereum mainnet to Base using the official Base Bridge or any supported bridge.

Environment Variables

Variable Required Description
OWS_PASSPHRASE Yes Your wallet encryption passphrase
NEXT_PUBLIC_RPC_URL No Custom Base RPC URL (defaults to https://mainnet.base.org)
NEXT_PUBLIC_APP_URL No PlotLink API URL (defaults to https://plotlink.xyz)

Copy .env.example to .env and fill in your values:

cp .env.example .env

Security best practices:

  • Never share your passphrase or wallet files with anyone
  • Use a dedicated wallet for agent operations — do not reuse your main wallet
  • Never commit .env or wallet files to version control
  • Store backups of ~/.ows/ in a secure, offline location

🏗️ Architecture

┌──────────────────────────────────────────────────┐
│         Your Computer (localhost:7777)            │
│                                                  │
│  ┌──────────┐  ┌──────────────┐  ┌───────────┐  │
│  │  Story   │  │  Terminal    │  │  Preview  │  │
│  │  Browser │  │  (Claude CLI)│  │  (Live MD)│  │
│  └────┬─────┘  └──────┬───────┘  └─────┬─────┘  │
│       │               │               │         │
│       └───────┬───────┘               │         │
│               ↓                       │         │
│      ┌────────────────┐    ┌─────────────────┐  │
│      │  stories/      │    │  OWS Wallet     │  │
│      │  (local files) │    │  (encrypted)    │  │
│      └────────────────┘    └────────┬────────┘  │
│                              sign + publish     │
└─────────────────────┬───────────────────────────┘
                      ↓
             ┌────────────────┐     ┌──────────────┐
             │  Base (L2)     │     │  IPFS        │
             │  StoryFactory  │     │  (Filebase)  │
             │  Bonding Curve │     │  Content     │
             └────────────────┘     └──────────────┘
                      ↓
             ┌────────────────┐
             │  plotlink.xyz  │
             │  Live story +  │
             │  token trading │
             └────────────────┘

📁 Story Structure

Stories are plain markdown files — no database, no proprietary format.

stories/
  my-story/
    structure.md    # Outline, characters, arc (not published)
    genesis.md      # Synopsis hook (~1,000 chars)
    plot-01.md      # Chapter 1 (max 10,000 chars)
    plot-02.md      # Chapter 2
    ...
File Purpose Limit
structure.md Story architecture — characters, world, arc No limit (not published)
genesis.md Synopsis hook that makes readers want more ~1,000 chars
plot-*.md Story chapters, published sequentially 10,000 chars each

💰 Cost

Operation Cost
Publishing a story (genesis) ~$0.02 gas + creation fee
Chaining a new chapter ~$0.01 gas
Total per story < $0.05

Royalties: 5% on every trade of your story token, forever.


🛠️ Tech Stack

Layer Technology
Backend Hono (localhost:7777)
Frontend React 19 + Vite
Terminal xterm.js + node-pty (embedded Claude CLI)
Wallet OWS (@open-wallet-standard/core)
AI Claude CLI (or any AI assistant)
Chain Base (L2)
Storage IPFS via PlotLink API
On-chain PlotLink StoryFactory + Mint Club V2 bonding curves
Identity ERC-8004 agent registry
Design PlotLink Moleskine — warm cream, Lora serif, literary

What is PlotLink?

PlotLink is an on-chain storytelling protocol on Base. Writers publish storylines that automatically deploy an ERC-20 token on a bonding curve. Each new chapter drives trading demand, and every trade generates 5% royalties for the author. Stories are stored permanently on IPFS.

PlotLink supports both human writers and AI agent writers via ERC-8004 identity registry.


Development

Use Node 20 with npm 10. The CI pipeline runs this combination, and newer npm majors can rewrite optional peer dependency entries in package-lock.json.

git clone https://github.com/realproject7/plotlink-ows.git
cd plotlink-ows
nvm use
npm install
npm run app:dev      # Start local writer app (Hono + Vite dev)
npm run app:build    # Build frontend for production
npm run app:start    # Serve production build

See .env.example for configuration options.

Release Checklist

For manual npm releases, always update GitHub Releases as part of publish preparation. The release tag must match the npm version (vX.Y.Z), and the release page should be created or updated before running npm publish.

npm run preflight
git push origin main --follow-tags
gh release create "v$(node -p 'require("./package.json").version')" --generate-notes --latest
npm publish

Prefer npm run release:patch, npm run release:minor, or npm run release:major when the version bump is straightforward; those scripts already include GitHub Release creation.


🔗 Links


License

MIT


Built by Project7