Cosmarium is a next-generation creative writing software designed for fiction authors (novels, short stories, novellas, long-form series) who want power, modularity, speed, and immersion.
Built in Rust with EGUI, Cosmarium puts modularity, ergonomics, and openness at the heart of its architecture through a comprehensive plugin system.
- Modular Plugin Architecture: Everything is a plugin - enable/disable features as needed
- Immersive Markdown Editor: Distraction-free writing with syntax highlighting and live preview
- Cross-Platform: Desktop (priority) and web support via EGUI
- Real-time Statistics: Word count, reading time, writing session analytics
- Flexible Project Management: Compressed files or directory structures
- Modern UI: Dark/light themes, customizable layouts, responsive design
Cosmarium follows a modular workspace structure:
cosmarium/
βββ cosmarium-core/ # Core application logic
βββ cosmarium-plugin-api/ # Plugin development API
βββ cosmarium-plugins/ # Built-in plugins
β βββ markdown-editor/ # Reference implementation
βββ cosmarium-app/ # Main application executable
βββ Cargo.toml # Workspace configuration
- cosmarium-core: Event system, plugin management, document/project handling
- cosmarium-plugin-api: Type-safe plugin API with traits and utilities
- cosmarium-plugins: Extensible plugin collection
- cosmarium-app: EGUI-based desktop/web application
- Rust 1.70+ with Cargo
- Git
git clone https://github.com/cosmarium/cosmarium
cd cosmarium
cargo build --release# Run the application
cargo run --bin cosmarium
# Run with specific project
cargo run --bin cosmarium -- --project /path/to/project.cosmarium
# Enable debug logging
cargo run --bin cosmarium -- --debug# Check all packages
cargo check
# Run tests
cargo test
# Check specific package
cargo check -p cosmarium-core
# Build for web (requires wasm32 target)
rustup target add wasm32-unknown-unknown
cargo build --target wasm32-unknown-unknown -p cosmarium-app --features webCosmarium's plugin system allows extending functionality through a type-safe API:
use cosmarium_plugin_api::{Plugin, PluginInfo, PanelPlugin, PluginContext};
use egui::Ui;
struct MyPlugin;
impl Plugin for MyPlugin {
fn info(&self) -> PluginInfo {
PluginInfo::new("my-plugin", "1.0.0", "Description", "Author")
}
fn initialize(&mut self, ctx: &mut PluginContext) -> anyhow::Result<()> {
// Plugin initialization
Ok(())
}
}
impl PanelPlugin for MyPlugin {
fn panel_title(&self) -> &str { "My Panel" }
fn render_panel(&mut self, ui: &mut Ui, ctx: &mut PluginContext) {
ui.label("Hello from my plugin!");
}
}- Panel Plugins: UI panels (notes, entities, etc.)
- Editor Plugins: Text editing extensions
- Export Plugins: Output format handlers
- Analysis Plugins: Writing statistics and feedback
- AI Plugins: Intelligent writing assistance
- Core plugin system architecture
- Basic markdown editor with statistics
- Project/document management
- EGUI-based desktop application
- Event-driven inter-plugin communication
- Live markdown preview
- Advanced syntax highlighting
- Writing goals and session tracking
- Multiple themes and customization
- Export to PDF/HTML/Word
- AI writing assistance
- Style analysis (Hemingway-inspired)
- Entity extraction and management
- Timeline and plot structure tools
- Real-time collaboration
- Version control integration
- Plugin marketplace
- Mobile/tablet support
- Language: Rust 2021 Edition
- UI Framework: EGUI (immediate mode GUI)
- Async Runtime: Tokio
- Serialization: Serde (JSON/TOML)
- Logging: Tracing
- Testing: Built-in Rust testing + integration tests
eframe- Cross-platform app frameworkegui- Immediate mode GUI librarytokio- Async runtimeserde- Serialization frameworkanyhow- Error handlingtracing- Structured logginguuid- Unique identifiers
- Zed: Modern editor ergonomics and performance
- Obsidian: Plugin architecture and modularity
- Scrivener: Writing project organization
- FocusWriter: Distraction-free writing experience
- VS Code: Extensible plugin ecosystem
Cosmarium is in active development. Contributions are welcome!
- π Bug Reports: Open issues for bugs or unexpected behavior
- π‘ Feature Requests: Suggest new features or improvements
- π§ Code Contributions: Submit pull requests
- π Documentation: Improve docs and examples
- π Plugin Development: Create and share plugins
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and test:
cargo test - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Development Phase: MVP Implementation (v0.1.0)
Cosmarium is currently in active development. The core architecture and basic functionality are implemented, with ongoing work on user experience and feature completeness.
Current Focus: Stabilizing the plugin API and expanding the built-in plugin ecosystem.