← BackJan 6, 2026

Show HN: WOLS – Open standard for mushroom cultivation tracking

WeMush Open Labeling Standard (WOLS) An open-source specification for encoding cultivation specimen data in machine-readable QR codes. Vendor-agnostic. Privacy-preserving. Research-grade. 🍄 Read ...

WeMush Open Labeling Standard (WOLS) An open-source specification for encoding cultivation specimen data in machine-readable QR codes. Vendor-agnostic. Privacy-preserving. Research-grade. 🍄 Read the Full Specification | 📖 View Online | 🌐 WeMush Platform | 💬 Join the Discussion Why WOLS? The global mushroom industry is worth $50 billion but operates on spreadsheets and paper notebooks. There's no standardization, no interoperability, and no way to share cultivation insights across organizations. WOLS fixes this. ┌─────────────────┐ │ QR Code Label │ ← Scan with any device └────────┬────────┘ │ ↓ ┌─────────────────────────────────────────┐ │ Complete Specimen History: │ │ • Species & strain │ │ • Growth stage & timeline │ │ • Environmental conditions │ │ • Substrate composition │ │ • Harvest yields │ │ • Lineage & genetics │ └─────────────────────────────────────────┘ Use Cases 🏭 Commercial Farms: Regulatory compliance and traceability 🔬 Research Labs: Reproducible experiments and data sharing 🏠 Home Cultivators: Track what works and optimize yields ♻️ Circular Economy: Prove sustainability claims with verifiable data 🤝 Equipment Manufacturers: Integrate tracking into products Quick Start Generate a Label (JavaScript/TypeScript) npm install @wemush/wols import { generateLabel } from '@wemush/wols'; const label = await generateLabel({ species: "Pleurotus ostreatus", strain: "Blue Oyster PoHu", type: "SUBSTRATE", stage: "COLONIZATION", created: new Date().toISOString(), }); // label.qrDataUrl → QR code as PNG data URL // label.json → Full specimen data Scan and Parse (Python) pip install wols from wols import parse_label, scan_qr_code # Scan QR code from image specimen_data = scan_qr_code("path/to/qr_code.png") # Or parse raw data specimen = parse_label(qr_code_data) print(f"Species: {specimen.species}") print(f"Stage: {specimen.stage}") print(f"Created: {specimen.created}") Features 🔓 Open by Default No licensing fees - Free forever No vendor lock-in - Works with any platform Community-driven - Governance by steering committee 🔐 Privacy-Preserving Public data option: Share openly for research Encrypted data option: Protect proprietary strains Cryptographic signatures: Verify authenticity 📈 Research-Grade Complete lineage tracking: Parent → child relationships Environmental data: Temp, humidity, CO₂, light Substrate composition: Reproducible formulations Statistical analysis ready: Export to CSV, JSON, or SQL 🔌 Extensible Custom namespaces: Add organization-specific fields Multiple encoding formats: Compact, embedded, or encrypted API-first design: Integrate with IoT sensors, equipment, or software Implementations Official Libraries Language Package Repository Status JavaScript/TypeScript npm install @wemush/wols specimen-labels-js ✅ Released Python pip install wols specimen-labels-py ✅ Released Container/CLI docker pull ghcr.io/wemush/specimen-labels-py:latest ghcr.io/wemush/specimen-labels-py ✅ Released Go — specimen-labels-go 📋 Planned Rust — specimen-labels-rs 📋 Planned Platform Support Platform WOLS Support Link WeMush ✅ Native wemush.com [Your Platform?] [Submit PR] [Your link] Want to add your platform/library? See Contributing Guide Specification Highlights Core Data Model interface SpecimenLabel { // Required id: string; // Unique identifier version: string; // Spec version (e.g., "1.0.0") type: SpecimenType; // CULTURE | SPAWN | SUBSTRATE | FRUITING species: string; // Scientific name stage: GrowthStage; // Current growth stage created: string; // ISO 8601 timestamp // Optional strain?: string; // Strain identifier genetics?: GeneticsInfo; // Lineage tracking batchId?: string; // Batch/cohort identifier organization?: string; // Organization ID custom?: Record; // Extensible fields signature?: string; // Cryptographic signature } Encoding Formats Compact (for small labels): wemush://v1/clx1a2b3c4?s=POSTR&st=COLONIZATION&t=1734307200 Embedded (most common): { "v": "1.0.0", "id": "clx1a2b3c4", "type": "SUBSTRATE", "species": "Pleurotus ostreatus", "strain": "Blue Oyster", "stage": "COLONIZATION", "created": "2025-12-16T10:30:00Z" } Encrypted (proprietary strains): wemush://v1/encrypted/clx1a2b3c4?e={payload}&sig={signature} 📖 Read Full Specification → Relationship to WeMush Platform WOLS is open source. WeMush Platform is proprietary. This specification and all reference implementations are open source and free to use. You can: ✅ Build your own platform using WOLS ✅ Generate labels using the libraries ✅ Integrate WOLS into your products ✅ Fork and modify as needed The WeMush Platform (https://wemush.com) is a proprietary implementation of WOLS that offers: Free tier with unlimited specimen tracking Premium features (ML, IoT, API, etc.) Professional support Hosted infrastructure Why this model? Open standards drive adoption. Proprietary platforms drive sustainability. This model ensures WOLS succeeds long-term while WeMush can continue investing in advanced features. Other companies are welcome to build competing platforms. We believe the best implementation wins, and we're confident WeMush will be that implementation. Real-World Examples Example 1: Home Cultivator Tracking Problem: "Which substrate gives me the best yields?" Solution: Print WOLS labels for each substrate bag Scan to log growth observations Compare yields across different recipes Reproduce the winner See full example → Example 2: Commercial Traceability Problem: "Food safety audit requires complete cultivation history" Solution: QR code on retail packaging Customer scans → sees full history Proves organic, local, or sustainable claims Regulatory compliance in one scan See full example → Example 3: Research Reproducibility Problem: "Can't replicate experimental results from published paper" Solution: WOLS label encodes exact parameters QR code in research paper Other labs scan → perfect replication Accelerates scientific progress See full example → Documentation 📘 Full Specification (View Online) 🚀 Getting Started Guide 🔧 Implementation Guide 🔐 Privacy & Security 🎨 Design Principles 💡 Use Cases ❓ FAQ API Reference JavaScript/TypeScript API Python API REST API Endpoints Contributing We welcome contributions from: 🌾 Growers: Use cases, feedback, testing 💻 Developers: Code, documentation, bug fixes 🔬 Researchers: Academic input, validation 🏭 Industry: Equipment integration, standards alignment How to Contribute Join the Discussion: GitHub Discussions Report Issues: GitHub Issues Submit Changes: Pull Request Guide Improve Docs: Every page has an "Edit" button Contribution Types Type Description Examples 🐛 Bug Fix Fix errors in spec or code Typos, broken links, incorrect examples ✨ Enhancement Improve existing features Better examples, clearer docs 🎉 New Feature Propose spec additions New fields, encoding formats 📚 Documentation Write guides or tutorials How-to articles, translations 💬 Discussion Start conversations Use cases, design questions 📋 Read Full Contributing Guide → Governance Steering Committee The WOLS specification is governed by a steering committee that reviews proposals and manages releases. Current Members: Mark Beacom (Chair) - WeMush Foundation [Open seat] - Industry Representative [Open seat] - Academic Representative [Open seat] - Community Representative Want to join? Apply here Proposal Process Submit issue describing proposed change Community discussion (14 days) Steering committee review RFC (Request for Comments) draft Final review and vote Merge and release 📋 Read Full Governance → Adoption Organizations Using WOLS Organization Type Use Case Since Mush Ohio Commercial Farm Production tracking 2025 [Your org?] [Type] [Use case] [Year] Using WOLS? Add your organization → Academic Citations If you use WOLS in research, please cite: @techreport{beacom2025wols, title={WeMush Open Labeling Standard: A Vendor-Agnostic Specification for Cultivation Specimen Tracking}, author={Beacom, Mark}, year={2025}, institution={WeMush Foundation}, url={https://github.com/wemush/open-standard} } Community Get Help 💬 GitHub Discussions - Ask questions 🐛 GitHub Issues - Report bugs 📧 Email - Direct contact 🐦 Twitter - Announcements Stay Updated ⭐ Star this repo to follow updates 👀 Watch releases for version announcements 📧 Join mailing list for monthly updates 🔔 Enable notifications for important discussions License Specification & Documentation: Creative Commons Attribution 4.0 International (CC BY 4.0) You are free to: ✅ Share — copy and redistribute ✅ Adapt — remix, transform, build upon ✅ Commercial use — use in commercial products Code Examples: Code snippets in this documentation may also be used under the Apache License 2.0 for easy integration into your projects. Reference Implementations: Official client libraries (in separate repositories) are licensed under the Apache License 2.0. Acknowledgments WOLS was created by Mark Beacom (Veteran, 2025 FVC Fellow, 2025 TSTI Fellow) and is supported by: Farmer Veteran Coalition - Supporting veteran agriculture Transatlantic Sustainability Transition Initiative - EU-US innovation collaboration Open-source community - Contributors worldwide Special thanks to early adopters, beta testers, and everyone providing feedback. Roadmap Current: Version 1.0.0 (Dec 2025) ✅ Core specification released ✅ JavaScript/TypeScript library ✅ Python library (beta) ✅ Reference implementation (WeMush platform) Next: Version 1.1.0 (Q1 2026) 🚧 IoT sensor integration spec 🚧 Blockchain verification option 🚧 Image metadata standard 🚧 Multi-language translations Future: Version 2.0.0 (Q2 2026) 📋 Extended field data support 📋 Advanced genetic encoding 📋 Supply chain integration 📋 Carbon tracking standard 📋 View Full Roadmap → FAQ Q: Do I need to pay to use WOLS? A: No. WOLS is free forever. CC BY 4.0 license means zero licensing fees. Q: Can I use WOLS with my existing software? A: Yes. WOLS is vendor-agnostic and designed for interoperability. Q: What if I want to add custom fields? A: Use the custom namespace. All implementations support extensibility. Q: Is this only for mushrooms? A: No. WOLS works for any biological specimen tracking. Cannabis, hemp, plants, etc. Q: Who owns the data encoded in WOLS labels? A: The cultivator who generated it. WOLS is just a format specification. Q: How do I report security issues? A: Email security@wemush.com (PGP key available) Q: If the standard is open, can competitors copy WeMush? A: They can support the WOLS standard, but not copy our platform. Think Android (open) vs Google Pixel (proprietary but best implementation). Q: Do I have to buy WeMush consumables to use the platform? A: No. The free tier works with any WOLS-compliant labels, including ones you generate yourself. Q: Why not fully open-source everything? A: Sustainability. Open-source projects need funding. By keeping the platform proprietary while open-sourcing the standard, we ensure long-term investment in both. Q: What if WeMush goes out of business? A: The standard lives on. Your data is exportable. Other platforms can continue supporting WOLS. That's the power of open standards. Q: Can I use WOLS without the WeMush platform? A: Yes! Use the open-source libraries to generate labels, store data however you want, build your own tools. WOLS is completely independent. 📋 Read Full FAQ → Support This Project How You Can Help ⭐ Star this repository - Increases visibility 🐛 Report bugs - Help improve quality 💻 Contribute code - Build the future 📢 Spread the word - Share with your network 💬 Join discussions - Shape the roadmap Sponsors WOLS development is supported by: Individual contributors Open-source community Your company? Sponsor us → Contact Project Lead: Mark Beacom Email: opensource@wemush.com Website: https://wemush.com GitHub: @wemush LinkedIn: Mark Beacom Twitter: @wemush