Narrative Insight Composition Output
A privacy-first, local-first writing application for authors, screenwriters, and narrative creators. Think Scrivener meets modern worldbuilding tools, with optional AI assistance that respects your creative process.
Nico helps you organize complex narratives across any medium—novels, screenplays, concept albums, video scripts, or non-fiction works.
Hierarchical Organization
- Projects contain Stories (or Volumes for non-fiction)
- Stories contain Chapters
- Chapters contain Scenes (fiction) or Sections (non-fiction)
- Drag-and-drop reordering at every level
Rich Worldbuilding
- Characters with detailed attributes, psychological profiles, and trait sliders
- Relationships between characters with customizable dynamics
- Locations as rich, character-like entities
- Events tracked on flexible timelines (days to decades)
- Bibliography for research and citations
Universal Attachments
- Add Notes, web Links, and Media (images/audio/video) to any entity
- Attach reference materials directly to scenes, characters, locations, or events
Professional Features
- WYSIWYG editor with formatting support
- Import/export: DOCX, Markdown, Fountain, Final Draft, EPUB
- Word count tracking and targets
- Story templates with structural beats
- Automatic revision history
AI Assistance (Optional)
- Ollama integration (runs locally on your machine)
- Optional cloud providers (OpenAI, Anthropic, Google)
- Granular control: mark individual items to exclude from AI
- Local-only mode for complete privacy
- Local-first: Projects are folders on your computer
- No cloud sync: Your stories never leave your machine unless you choose
- Zero telemetry: No usage data collected, ever
- Open source: Audit the code yourself
Backend
- Python 3.13+
- PostgreSQL with pgvector (for semantic search)
- SQLAlchemy + Alembic (ORM and migrations)
- ChromaDB fallback for vector storage
Frontend
- PySide6 (Qt for Python) for native desktop UI
- QWebEngineView hosting ProseMirror/TipTap for rich text editing
AI Integration
- Ollama (local models, primary)
- OpenAI / Anthropic / Google APIs (optional)
- Embedding generation for semantic search
Packaging
- PyInstaller or Briefcase for cross-platform builds
- Auto-update framework (TBD)
Nico follows clean architecture principles:
- Domain layer: Core entities and business logic
- Application layer: Use cases and services
- Infrastructure layer: Database, AI providers, file I/O
- Presentation layer: Qt UI components
See ARCHITECTURE.md (in development) for detailed design decisions.
nico/
├── nico/ # Main application package
│ ├── domain/ # Entities, value objects, domain services
│ ├── application/ # Use cases, DTOs
│ ├── infrastructure/ # Database, AI clients, file handling
│ └── presentation/ # Qt UI, web editor bridge
├── migrations/ # Alembic database migrations
├── tests/ # Test suite
├── docs/ # Additional documentation
└── pyproject.toml # Project dependencies
Each user project is a directory containing:
my-novel/
├── project.db # PostgreSQL connection or embedded SQLite
├── media/ # Referenced images, audio, video
├── chroma/ # ChromaDB vector storage (if used)
├── exports/ # Generated output files
└── project.json # Project manifest
Prerequisites
- Python 3.13+ (managed via pyenv)
- PostgreSQL 15+ with pgvector extension
- Qt6 development libraries
Setup
# Clone the repository
git clone git@github.com:applebiter/nico.git
cd nico
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -e ".[dev]"
# Set up database
# (Instructions coming soon)
# Run the application
python -m nico🚧 Early Development 🚧
We're currently focusing on:
- ✅ Core database schema design
- ⏳ SQLAlchemy models and migrations
- ⏳ Basic Qt UI skeleton
- ⏳ Project creation and management
See ROADMAP.md for planned features and timeline.
Nico disables telemetry from all third-party libraries (ChromaDB/PostHog, Hugging Face) on startup. No data is collected or transmitted unless you explicitly configure and use AI providers.
When AI features are used:
- Data sent only when you invoke AI features
- Respects project-wide "Local-only AI" setting
- Honors per-item "Exclude from AI" flags
- Full transparency over what's sent
See PRIVACY.md for complete details.
Contributions are welcome! Please read CONTRIBUTING.md (coming soon) for guidelines.
- Privacy is non-negotiable
- Local-first always
- Clean architecture and clear module boundaries
- Comprehensive tests for critical paths
- Document design decisions
MIT License - see file for details.
Built for writers, by developers who respect the creative process. Inspired by Scrivener, enhanced for the AI age, designed for privacy.
- GitHub Issues: github.com/applebiter/nico/issues
- Repository: github.com/applebiter/nico
Status: Pre-alpha development | Python: 3.13+ | License: MIT