_ _ _ __ __ _ __ _
/ \ ___ __ _ __| | ___ _ __ ___ (_) ___ \ \ / /__ _ __| | __/ _| | _____ __
/ _ \ / __/ _` |/ _` |/ _ \ '_ ` _ \| |/ __| \ \ /\ / / _ \| '__| |/ / |_| |/ _ \ \ /\ / /
/ ___ \ (_| (_| | (_| | __/ | | | | | | (__ \ V V / (_) | | | <| _| | (_) \ V V /
/_/ \_\___\__,_|\__,_|\___|_| |_| |_|_|\___| \_/\_/ \___/|_| |_|\_\_| |_|\___/ \_/\_/
____ _ _
/ ___| _ _(_) |_ ___
\___ \| | | | | __/ _ \
___) | |_| | | || __/
|____/ \__,_|_|\__\___|<div align="center">
[](https://github.com/academic-workflow-suite/actions)
[](LICENSE)
[](https://github.com/academic-workflow-suite/releases)
[](https://hub.docker.com/r/aws-edu/core)
[](docs/SECURITY.md#gdpr-compliance)
[](docs/SECURITY.md)
[Website](https://aws-edu.org) • [Documentation](docs/README.md) • [Quick Start](docs/QUICK_START.md) • [Installation](docs/INSTALLATION_GUIDE.md) • [Support](https://discuss.aws-edu.org)
Reduce TMA marking time from 20-30 minutes to under 10 minutes while maintaining quality and protecting student privacy.
</div>
-
[Overview](#overview)
-
[The Problem We Solve](#the-problem-we-solve)
-
[Key Features](#key-features)
-
[Screenshots](#screenshots)
-
[Quick Start](#quick-start)
-
[Architecture](#architecture)
-
[Installation](#installation)
-
[Usage](#usage)
-
[Documentation](#documentation)
-
[Development](#development)
-
[Security & Privacy](#security—privacy)
-
[Roadmap](#roadmap)
-
[Support](#support)
-
[Contributing](#contributing)
-
[License](#license)
-
[Citation](#citation)
-
[Acknowledgments](#acknowledgments)
Academic Workflow Suite (AWS) is an open-source, privacy-first AI assistant designed specifically for Open University Associate Lecturers to streamline the marking of Tutor-Marked Assignments (TMAs).
Unlike cloud-based AI tools that compromise student privacy, AWS runs entirely on your local machine with mathematical guarantees that student data never reaches AI systems in identifiable form.
-
OU Associate Lecturers marking TMAs across all modules
-
Academic institutions requiring GDPR-compliant AI assistance
-
Researchers studying educational technology and privacy-preserving AI
-
Developers interested in event-sourced, privacy-first architectures
Traditional Marking: With Academic Workflow Suite:
───────────────── ────────────────────────────
📄 Read submission 📄 Load document (auto)
📝 Check rubric 📝 Rubric loaded (auto)
💭 Analyze quality 🤖 AI analysis (10-30s)
✍️ Write feedback ✍️ Review & edit AI suggestions
🔢 Calculate scores 🔢 Scores calculated
📋 Format comments 📋 Auto-format & insert
⏱️ 20-30 minutes/TMA ⏱️ <10 minutes/TMA
🔒 100% student privacyOpen University Associate Lecturers face a significant workload challenge:
-
20-30 minutes per TMA on average
-
50-100+ TMAs per assignment for popular modules
-
Repetitive feedback for common mistakes
-
Cognitive load of maintaining rubric consistency
-
Tight deadlines (typically 2-3 weeks)
Total time commitment: 16-50+ hours per assignment batch
While commercial AI assistants can help, they pose serious privacy risks:
❌ Student data sent to cloud servers ❌ No control over data retention ❌ Potential GDPR violations ❌ University policy non-compliance ❌ No audit trail ❌ Risk of data breaches
AWS provides AI assistance with zero privacy compromise:
✅ Runs entirely on your machine (no cloud required) ✅ Student IDs never reach AI (cryptographically anonymized) ✅ Network-isolated AI (cannot exfiltrate data) ✅ Complete audit trail (event sourcing) ✅ GDPR compliant by design ✅ University-approved architecture
-
Intelligent analysis against custom or pre-loaded rubrics
-
Constructive feedback suggestions that you can edit or reject
-
Score recommendations based on rubric criteria
-
Consistency checking across multiple submissions
-
Learn your style (adapts to your feedback patterns over time)
Student ID: A1234567
↓ SHA3-512 Hash (one-way, irreversible)
Hash: 7f3a2b9c8e1d4a5c6f8b9e2d3c4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b...
↓ Sent to AI Jail (network-isolated container)
AI sees:
✓ Anonymous hash
✓ Essay content
✓ Rubric criteria
AI never sees:
✗ Student ID
✗ Student name
✗ Any personally identifiable informationMathematical guarantee: SHA3-512 hash cannot be reversed (2^512 search space = more combinations than atoms in the universe)
Every action is logged immutably:
2025-11-22 14:32:01 - Document loaded: TM112-TMA01
2025-11-22 14:32:15 - Student ID anonymized: A1234567 → hash
2025-11-22 14:32:47 - AI analysis completed (29 seconds)
2025-11-22 14:35:22 - Tutor edited feedback for criterion: Understanding
2025-11-22 14:36:10 - Feedback inserted into Word document
2025-11-22 14:36:32 - Document exported as PDFBenefits: - Prove compliance for university audits - Reproduce past decisions for quality assurance - Time-travel debugging for troubleshooting - GDPR right to explanation support
Seamless integration with Microsoft Word via official Office Add-in:
-
Task pane interface in Word (no context switching)
-
Direct document manipulation using Office.js
-
Inline comments inserted automatically
-
Rubric-based scoring with auto-calculation
-
Export to PDF/DOCX with formatting preserved
Future releases will include: - Direct download of student submissions - Automated grade upload to Moodle gradebook - Batch processing of entire assignment cohorts
Mark multiple TMAs efficiently:
= Analyze all TMAs in a directory
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core batch analyze --module TM112 --assignment TMA01 --input ./submissions/
= Process 50 TMAs in parallel
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= Average processing time: 10 minutes per TMA
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= Total time: ~8-10 hours → Run overnight!
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]Create and share rubrics:
= Example: TM112 TMA01 Rubric
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
module: TM112
assignment: TMA01
total_marks: 100
criteria:
- id: understanding
name: Understanding of Concepts
marks: 30
description: Demonstrates grasp of networking fundamentals
- id: analysis
name: Critical Analysis
marks: 30
description: Evaluates concepts critically with evidence
- id: structure
name: Structure & Clarity
marks: 20
description: Well-organized, clear writing
- id: evidence
name: Use of Evidence
marks: 20
description: Appropriate citations and examplesFull compliance with EU General Data Protection Regulation:
-
Data minimization: Only necessary data processed
-
Purpose limitation: Data used only for marking
-
Storage limitation: Configurable retention periods
-
Right to erasure: Complete data deletion on request
-
Right to explanation: Full audit trail available
-
Data portability: Export all data in standard formats
-
Privacy by design: Architecture prevents PII leakage
Note: The following are placeholder descriptions. Actual screenshots will be added in future releases.
┌─────────────────────────────────────────────────────────────────────┐
│ Microsoft Word - TM112-TMA01.docx │
├─────────────────────────────┬───────────────────────────────────────┤
│ │ ┌─────────────────────────────────┐ │
│ Student: A1234567 │ │ Academic Workflow Suite │ │
│ Module: TM112 │ │ │ │
│ Assignment: TMA01 │ │ Module: TM112 ▾ │ │
│ │ │ Assignment: TMA01 ▾ │ │
│ Question 1: │ │ │ │
│ Explain the concept of... │ │ [Load Document] │ │
│ │ │ │ │
│ [Student's essay text] │ │ Status: ✓ Document loaded │ │
│ Lorem ipsum dolor sit │ │ │ │
│ amet, consectetur │ │ Rubric: TM112-TMA01 Official │ │
│ adipiscing elit... │ │ │ │
│ │ │ [Analyze Submission] │ │
│ │ └─────────────────────────────────┘ │
└─────────────────────────────┴───────────────────────────────────────┘Figure 1: Office add-in task pane showing document loaded and ready for analysis
┌─────────────────────────────────────────────────────────────────────┐
│ AI Analysis Complete │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ Suggested Scores: │
│ │
│ 📚 Understanding of Concepts: 24/30 ★★★★☆ │
│ 🔍 Critical Analysis: 22/30 ★★★☆☆ │
│ 📝 Structure & Clarity: 17/20 ★★★★☆ │
│ 📖 Use of Evidence: 15/20 ★★★☆☆ │
│ ───────────────────────────────────────────────── │
│ Total: 78/100 (B+) │
│ │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ Suggested Feedback (Understanding of Concepts) │ │
│ │ │ │
│ │ "You demonstrate a solid understanding of networking │ │
│ │ fundamentals. Your explanation of the TCP/IP model is clear │ │
│ │ and accurate. To improve, consider exploring how the OSI │ │
│ │ model relates to real-world protocols in more depth." │ │
│ │ │ │
│ │ [✎ Edit] [✓ Accept] [✗ Reject] │ │
│ └───────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘Figure 2: AI-generated feedback suggestions with scores
┌─────────────────────────────────────────────────────────────────────┐
│ AWS Settings │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ⚙️ General │
│ ├─ Feedback Tone: ◉ Formal ○ Friendly ○ Custom │
│ ├─ Scoring Strictness: [█████████░] 85% │
│ └─ Auto-save Interval: [5 minutes ▾] │
│ │
│ 🔒 Privacy │
│ ├─ Hash Algorithm: SHA3-512 (FIPS 202) ✓ │
│ ├─ Network Isolation: ✓ Enabled │
│ └─ Data Retention: [90 days ▾] │
│ │
│ 🎨 Appearance │
│ ├─ Theme: ◉ Light ○ Dark ○ Auto │
│ └─ Font Size: [14pt ▾] │
│ │
│ 📊 Analytics │
│ ├─ Anonymous Usage Stats: ○ Enabled ◉ Disabled │
│ └─ Crash Reports: ○ Enabled ◉ Disabled │
│ │
│ [Save Changes] [Reset to Defaults] │
└─────────────────────────────────────────────────────────────────────┘Figure 3: Settings panel for customizing AWS behavior
┌─────────────────────────────────────────────────────────────────────┐
│ Marking Statistics - TM112 TMA01 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 📈 Overview │
│ ├─ TMAs Marked: 47 / 52 │
│ ├─ Average Time: 8.5 minutes/TMA │
│ ├─ Time Saved: ~9.5 hours (vs 20min average) │
│ └─ AI Suggestions Accepted: 73% │
│ │
│ 📊 Score Distribution │
│ ┌─────────────────────────────────────────────┐ │
│ │ A: ████████ (17%) │ │
│ │ B: ████████████████ (30%) │ │
│ │ C: ████████████████████ (38%) │ │
│ │ D: ████████ (13%) │ │
│ │ Fail: ██ (2%) │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ 🎯 Rubric Criteria (Average Scores) │
│ ├─ Understanding: 23.4/30 (78%) │
│ ├─ Analysis: 21.8/30 (73%) │
│ ├─ Structure: 16.2/20 (81%) │
│ └─ Evidence: 15.9/20 (80%) │
│ │
│ [Export Report] [View Trends] │
└─────────────────────────────────────────────────────────────────────┘Figure 4: Analytics dashboard showing marking statistics
-
Microsoft Word 2019 or later (or Office 365)
-
Docker or Podman (for AI isolation)
-
10 GB free disk space
-
8 GB RAM (16 GB recommended)
= 1. Start AWS services
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core start
= 2. Open Word and click the AWS tab
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= 3. Open a TMA document
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= 4. Click "Analyze Submission"
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= 5. Review and edit AI suggestions
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= 6. Insert feedback into document
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= 7. Export and submit!
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]Full guide: See [Quick Start Guide](docs/QUICK_START.md) for detailed walkthrough
┌─────────────────────────────────────────────────────────────────────┐
│ USER ENVIRONMENT │
│ │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ Presentation Layer │ │
│ │ ┌─────────────────────────────────────────────────────────┐ │ │
│ │ │ Microsoft Word + AWS Office Add-in (ReScript) │ │ │
│ │ │ - Task pane UI │ │ │
│ │ │ - Document manipulation (Office.js) │ │ │
│ │ └──────────────────────┬──────────────────────────────────┘ │ │
│ └─────────────────────────┼─────────────────────────────────────┘ │
│ │ HTTPS/TLS 1.3 (localhost:8080) │
│ ┌─────────────────────────▼─────────────────────────────────────┐ │
│ │ Application Layer (Rust) │ │
│ │ ┌──────────┐ ┌──────────┐ ┌─────────────────┐ │ │
│ │ │ REST API │ │ Business │ │ Anonymization │ │ │
│ │ │ (Actix) │ │ Logic │ │ Engine (SHA3) │ │ │
│ │ └──────────┘ └──────────┘ └─────────────────┘ │ │
│ └─────────────────────────┬─────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────▼─────────────────────────────────────┐ │
│ │ Persistence Layer │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │
│ │ │ Event │ │ Read │ │ File Storage │ │ │
│ │ │ Store │ │ Models │ │ (Documents) │ │ │
│ │ │ (LMDB) │ │(In-Mem) │ │ │ │ │
│ │ └──────────┘ └──────────┘ └──────────────┘ │ │
│ └─────────────────────────┬─────────────────────────────────────┘ │
│ │ Unix Socket (IPC) │
│ ┌─────────────────────────▼─────────────────────────────────────┐ │
│ │ AI Isolation Layer (Network-Isolated Container) │ │
│ │ ┌─────────────────────────────────────────────────────────┐ │ │
│ │ │ 🔒 Sandboxed Environment (gVisor/Firecracker) │ │ │
│ │ │ ┌────────┐ ┌─────────┐ ┌──────────────────────────┐ │ │ │
│ │ │ │ AI │ │ ONNX │ │ Security Controls: │ │ │ │
│ │ │ │ Model │ │ Runtime │ │ ✗ No network access │ │ │ │
│ │ │ │ │ │ │ │ ✗ Read-only filesystem │ │ │ │
│ │ │ │ │ │ │ │ ✗ No PII received │ │ │ │
│ │ │ └────────┘ └─────────┘ └──────────────────────────┘ │ │ │
│ │ └─────────────────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
│ HTTPS (Optional)
│
┌─────────────▼────────────────┐
│ Backend Services (Optional) │
│ - Rubric repository │
│ - Software updates │
│ - NO student data │
└──────────────────────────────┘| Component | Technology | Purpose | |-----------|------------|---------| | Office Add-in | ReScript, Office.js, Webpack | UI and Word integration | | Core Engine | Rust, Actix-Web, Tokio | Business logic and API | | Event Store | LMDB (via Heed) | Immutable event log | | AI Jail | Rust, ONNX Runtime, Docker | Isolated AI inference | | Backend | Rust, Actix-Web (optional) | Rubric repository, updates |
-
Frontend: ReScript → JavaScript, React, Office.js
-
Backend: Rust (stable), Actix-Web 4.x
-
Database: LMDB (Lightning Memory-Mapped Database)
-
AI Runtime: ONNX Runtime, llama.cpp
-
Containerization: Docker/Podman, gVisor
-
Cryptography: SHA3 (FIPS 202), AES-256-GCM
-
Build System: Cargo, npm, Make
-
Verified Libraries: proven (Idris2 formally verified modules)
Academic Workflow Suite integrates with the proven library - a formally verified, crashproof library written in Idris2 with 45 modules and 43 language FFI bindings.
| Module | Purpose | Guarantee |
|---|---|---|
SafeCrypto |
SHA3-512 anonymization, AES-256-GCM encryption |
Timing attack resistance, no panics |
SafeJson |
IPC communication, API parsing |
No parse failures, memory safety |
SafeRegex |
PII detection, input validation |
No ReDoS, polynomial-time matching |
SafeStateMachine |
Event sourcing, workflow states |
No invalid states, deterministic |
SafePath |
Document path handling |
Path traversal prevention |
-
Mathematical Guarantees: Formally proven correctness
-
Crash Safety: No panics or undefined behavior
-
Security Hardening: Verified cryptographic implementations
-
Auditability: Proofs available for security review
See: Proven Integration Guide for implementation details
1. Tutor opens TMA → Office Add-in parses document
2. Student ID extracted → Core Engine anonymizes (SHA3-512)
3. Anonymized data sent → AI Jail via Unix socket
4. AI analyzes essay → Returns feedback suggestions
5. Core re-associates → Hash → Student ID
6. Tutor reviews/edits → Inserts into Word document
7. Audit event logged → Immutable event storeDetailed architecture: See [Architecture Documentation](docs/ARCHITECTURE.md)
| Component | Minimum | Recommended | |-----------|---------|-------------| | OS | Windows 10, macOS 11, Ubuntu 20.04 | Windows 11, macOS 13+, Ubuntu 22.04+ | | CPU | 2 cores, 2.0 GHz | 4+ cores, 3.0 GHz | | RAM | 8 GB | 16 GB | | Disk | 10 GB free | 20 GB free (SSD) | | Word | Office 2019 | Office 365 | | Docker | Docker 20.10+ | Docker 24.0+ or Podman 4.0+ |
One-liner installation with sensible defaults:
macOS / Linux:
curl -sSL https://install.aws-edu.org/install.sh | bashWindows (PowerShell as Administrator):
iwr https://install.aws-edu.org/install.ps1 -useb | iexWhat gets installed:
- AWS Core Engine (/usr/local/bin/aws-core)
- Office Add-in (configured in Word)
- AI Jail container image
- Default rubrics for popular modules
- System dependencies
Choose components and installation paths:
= Download installer
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
curl -sSL https://install.aws-edu.org/install.sh -o install.sh
= Run with custom options
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
bash install.sh \
--prefix ~/.local \
--no-ai-jail \
--modules TM112,M250 \
--config-file my-config.tomlFor developers or custom builds:
= Clone repository
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
git clone https://github.com/academic-workflow-suite/aws.git
cd aws
= Build all components
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make build
= Install
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
sudo make install
= Or install to custom location
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make install PREFIX=~/.localFull installation guide: See [Installation Guide](docs/INSTALLATION_GUIDE.md)
= Check AWS Core
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core --version
= Expected: AWS Core Engine v0.1.0
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= Check Docker
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
docker ps
= Expected: Container list (may be empty)
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= Check Office Add-in
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= Open Word → Look for "AWS" tab in ribbon
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]= Start AWS Core Engine
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core start
= Check status
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core status
= Expected:
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= ✓ Core Engine: Running
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= ✓ AI Jail: Ready
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= ✓ Database: OK
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]= Edit configuration
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core config edit
= Common settings:
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= - feedback_tone: formal, friendly, or custom
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= - scoring_strictness: 0-100
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= - data_retention_days: 90
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= - theme: light, dark, or auto
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]In AWS task pane: - Module: Select from dropdown (e.g., TM112) - Assignment: Select TMA (e.g., TMA01) - Click Load Document
AWS will parse the document and detect: - Student ID - Module/assignment metadata - Question structure - Student responses
-
Click Load Rubric
-
Choose official rubric or create custom
-
Review criteria and marks
-
Click Analyze Submission
-
Wait 10-30 seconds for AI analysis
-
Review suggested scores and feedback
Important: AI provides suggestions, not decisions!
-
Edit any feedback text
-
Adjust scores based on your judgment
-
Add personal comments
-
Remove suggestions you disagree with
-
Click Insert Feedback
-
AWS adds comments to Word document
-
Review inserted feedback
-
Make final adjustments
Mark multiple TMAs at once:
= Prepare TMAs
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
mkdir -p ~/marking/TM112-TMA01
= Place all TMA documents in this directory
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= Batch analyze
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core batch analyze \
--module TM112 \
--assignment TMA01 \
--input ~/marking/TM112-TMA01 \
--output ~/marking/TM112-TMA01-marked \
--parallelism 4
= Review and finalize in Word
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]Create rubrics for any module:
= Interactive rubric creator
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core rubric create \
--module M250 \
--assignment TMA02
= Follow prompts to define criteria
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]Or edit YAML directly:
= ~/.aws/rubrics/M250-TMA02.yml
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
module: M250
assignment: TMA02
total_marks: 100
criteria:
- id: oop_design
name: Object-Oriented Design
marks: 40
description: Quality of class design and UML diagrams
- id: implementation
name: Code Implementation
marks: 40
description: Correctness and style of Java code
- id: testing
name: Testing & Documentation
marks: 20
description: Unit tests and code documentation= Start/stop services
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core start
aws-core stop
aws-core restart
= Status and health
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core status
aws-core doctor # Diagnose issues
= Rubrics
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core rubric list
aws-core rubric show TM112 TMA01
aws-core rubric create --module M250 --assignment TMA03
aws-core rubric import rubric.yml
= Updates
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core update # Update AWS
aws-core update-rubrics # Update rubric repository
= Logs and diagnostics
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core logs
aws-core logs --tail 50
aws-core logs --follow
= Configuration
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core config show
aws-core config edit
aws-core config reset
= Export statistics
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core stats export --module TM112 --format csvFull user guide: See [User Guide](docs/USER_GUIDE.md)
-
[Quick Start Guide](docs/QUICK_START.md) - Get started in 10 minutes
-
[Installation Guide](docs/INSTALLATION_GUIDE.md) - Detailed installation instructions
-
[User Guide](docs/USER_GUIDE.md) - Comprehensive manual
-
[FAQ](docs/USER_GUIDE.md#faq) - Frequently asked questions
-
[Troubleshooting](docs/USER_GUIDE.md#troubleshooting) - Common issues and solutions
-
[Architecture](docs/ARCHITECTURE.md) - System architecture and design
-
[API Reference](docs/API_REFERENCE.md) - REST API specification
-
[Security](docs/SECURITY.md) - Security model and privacy guarantees
-
[Proven Integration](docs/PROVEN_INTEGRATION.adoc) - Formally verified library integration
-
[Roadmap](docs/ROADMAP.adoc) - Future directions and development paths
-
[Development Guide](docs/DEVELOPMENT.md) - Contributing and development
-
[CI/CD](docs/CI-CD.md) - Continuous integration and deployment
-
[Core Engine](components/core/README.md) - Rust backend
-
[Office Add-in](components/office-addin/README.md) - ReScript frontend
-
[AI Jail](components/ai-jail/README.md) - Isolated AI inference
-
[Backend](components/backend/README.md) - Optional cloud services
-
Rust 1.75+ (
rustup install stable) -
Node.js 18+ and npm
-
Docker 20.10+ or Podman 4.0+
-
Git 2.30+
= Clone repository
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
git clone https://github.com/academic-workflow-suite/aws.git
cd aws
= Install dependencies
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make deps
= Build all components
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make build
= Run tests
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make test
= Start development servers
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make devacademic-workflow-suite/
├── components/
│ ├── core/ # Rust backend (Actix-Web)
│ ├── office-addin/ # ReScript frontend (Office.js)
│ ├── ai-jail/ # Isolated AI inference
│ ├── backend/ # Optional cloud services
│ └── shared/ # Shared types and utilities
├── docs/ # Documentation
├── scripts/ # Build and deployment scripts
├── tests/ # Integration tests
├── docker/ # Dockerfiles and compose configs
├── cli/ # Command-line interface
├── config/ # Default configurations
└── website/ # Project website= Create feature branch
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
git checkout -b feature/my-feature
= Make changes and test
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make test
make lint
= Run locally
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make dev
= Build release
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make release
= Create pull request
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
git push origin feature/my-feature= All tests
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make test
= Unit tests only
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make test-unit
= Integration tests
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make test-integration
= End-to-end tests
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make test-e2e
= With coverage
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make test-coverageThis project follows:
- Rust: rustfmt and clippy (strict mode)
- ReScript: ReScript formatter
- YAML: yamllint
= Format code
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make format
= Lint code
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make lint
= Fix auto-fixable issues
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
make lint-fixWe welcome contributions! Please see [CONTRIBUTING.md](components/office-addin/CONTRIBUTING.md) for:
-
Code of conduct
-
Development workflow
-
Pull request process
-
Coding standards
-
Testing requirements
Quick start for contributors:
-
Fork the repository
-
Create a feature branch
-
Make your changes with tests
-
Ensure
make testandmake lintpass -
Submit a pull request
AWS provides mathematical guarantees that student personally identifiable information (PII) cannot reach AI systems:
Student ID → SHA3-512 Hash → AI Jail
A1234567 → 7f3a2b9c... → (irreversible)
Attack resistance:
• Brute force: 2^512 search space (infeasible)
• Rainbow table: Prevented by random salt
• Timing attack: Constant-time implementationAI Jail container is completely isolated:
Security Controls:
✓ No network access (iptables DROP all)
✓ Read-only filesystem
✓ System call filtering (seccomp)
✓ Memory limits (4 GB)
✓ No GPU access
✓ Container destroyed after use-
All student data stays on your machine
-
No cloud services required for core functionality
-
Optional backend only for rubrics (no student data)
AWS is compliant with EU General Data Protection Regulation:
| GDPR Right | Implementation |
|------------|----------------|
| Right to be informed | Complete audit trail available |
| Right of access | Export all data via aws-core export |
| Right to rectification | Edit or delete any data |
| Right to erasure | aws-core delete --student A1234567 |
| Right to restriction | Pause processing for specific students |
| Right to data portability | Export in JSON, CSV, or XML |
| Right to object | Opt-out mechanisms available |
| Rights related to automated decision-making | Human (tutor) always in the loop |
AWS is designed to meet university data protection requirements:
✅ No cloud data storage (student data never leaves machine) ✅ Anonymized AI processing (PII cryptographically protected) ✅ Complete audit trail (prove compliance) ✅ Tutor override (AI assists, tutor decides) ✅ Open source (auditable by university IT)
We conduct regular security assessments:
-
Static analysis: Clippy, cargo-audit
-
Dependency scanning: Dependabot, Snyk
-
Container scanning: Trivy, Clair
-
Penetration testing: Annual third-party audits
-
Fuzzing: Continuous fuzzing with cargo-fuzz
Found a security issue? Please report responsibly:
-
Email: security@aws-edu.org
-
PGP Key: [Download](https://aws-edu.org/pgp-key.asc)
-
Response time: 24-48 hours
Do not open public GitHub issues for security vulnerabilities.
See: [Security Policy](security/policies/SECURITY_POLICY.md) for full details
-
✓ Core engine with event sourcing
-
✓ Office Add-in for Word
-
✓ AI isolation with Docker/gVisor
-
✓ SHA3-512 anonymization
-
✓ LMDB event store
-
✓ Basic rubric support
-
✓ Manual feedback editing
-
✓ PDF export
-
✓ CLI interface
-
✓ Documentation
-
❏ Moodle LMS integration - Direct submission download
-
❏ Batch processing improvements - Parallel analysis
-
❏ Advanced analytics dashboard - Marking statistics
-
❏ Custom AI models - Fine-tune on your feedback style
-
❏ Voice dictation - Speak your feedback
-
❏ Mobile app - Review feedback on iOS/Android
-
❏ Collaborative marking - Multiple tutors on same module
-
❏ Plagiarism detection - Integration with Turnitin API
-
❏ Grade moderation - Cross-tutor consistency checking
-
❏ Student progress tracking - Longitudinal analysis
-
❏ Multilingual support - Support for non-English TMAs
-
❏ Enhanced privacy - Zero-knowledge proofs
-
❏ Browser extension - Mark TMAs in any web interface
-
❏ Automated grading - For objective questions (opt-in)
-
❏ Student self-assessment - Pre-submission feedback tool
-
❏ Research analytics - Anonymized data for pedagogy research
-
❏ Integration with Turnitin, Gradescope, Canvas
-
❏ Machine learning model marketplace - Share fine-tuned models
Suggest a feature: [Open a discussion](https://github.com/academic-workflow-suite/discussions)
First, check our comprehensive documentation:
-
[User Guide](docs/USER_GUIDE.md) - How to use AWS
-
[FAQ](docs/USER_GUIDE.md#faq) - Common questions
-
[Troubleshooting](docs/USER_GUIDE.md#troubleshooting) - Fix common issues
-
[Installation Guide](docs/INSTALLATION_GUIDE.md) - Setup help
Join our community:
-
[Discussion Forum](https://discuss.aws-edu.org) - Ask questions, share tips
-
[GitHub Discussions](https://github.com/academic-workflow-suite/discussions) - Feature requests, Q&A
-
[Discord Server](https://discord.gg/aws-edu) - Real-time chat
-
[Monthly Webinars](https://aws-edu.org/webinars) - Live demos and Q&A
Report bugs or request features:
-
[GitHub Issues](https://github.com/academic-workflow-suite/issues) - Bug reports, feature requests
-
[Security Issues](mailto:security@aws-edu.org) - Confidential security reports
For direct assistance:
-
General: support@aws-edu.org
-
Technical: tech@aws-edu.org
-
Security: security@aws-edu.org
-
Press/Media: press@aws-edu.org
Response time: Usually 24-48 hours (weekdays)
Enterprise support available for institutions:
-
Priority email support (4-hour response SLA)
-
Dedicated Slack channel
-
Custom feature development
-
On-site training
-
Annual security audits
Contact: enterprise@aws-edu.org
We welcome contributions from the community! AWS is built by educators, for educators.
-
Fix bugs
-
Implement features from roadmap
-
Improve documentation
-
Add tests
-
Optimize performance
See [Development](#development) section for setup instructions.
Share rubrics for your module:
= Export your rubric
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
aws-core rubric export M250 TMA02 > M250-TMA02.yml
= Submit via PR to rubrics repository
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]
= https://github.com/academic-workflow-suite/rubrics
image:https://img.shields.io/badge/license-Palimpsest--MPL--1.0-purple.svg[Palimpsest-MPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] image:https://img.shields.io/badge/philosophy-Palimpsest-purple.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-licence"]Contributors are recognized in:
-
[Contributors](https://github.com/academic-workflow-suite/graphs/contributors) page
-
Release notes
-
Annual contributor report
Top contributors may receive: - AWS swag (stickers, t-shirts) - Early access to new features - Invitation to contributor meetups
This project is licensed under the Palimpsest-MPL License v3.0 (PMPL-1.0).
Academic Workflow Suite
Copyright (C) 2025 Academic Workflow Suite Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the Palimpsest-MPL License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Palimpsest-MPL License for more details.
You should have received a copy of the Palimpsest-MPL License
along with this program. If not, see <https://www.gnu.org/licenses/>.Why AGPL?
We chose PMPL-1.0 to ensure that:
-
AWS remains free and open source for all users
-
Improvements are shared with the community (even for web services)
-
Student privacy is protected (source code is auditable)
-
Commercial vendors must contribute back if they modify AWS
See: [LICENSE](LICENSE) for full text
Documentation is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).
You are free to: - Share — copy and redistribute the material - Adapt — remix, transform, and build upon the material
Under the following terms: - Attribution — You must give appropriate credit - ShareAlike — If you remix, you must distribute under the same license
If you use Academic Workflow Suite in your research or teaching, please cite:
APA Style:
Academic Workflow Suite Contributors. (2025). Academic Workflow Suite:
Privacy-First AI-Assisted TMA Marking (Version 0.1.0) [Computer software].
https://github.com/academic-workflow-suiteBibTeX:
@software{academic_workflow_suite_2025,
title = {Academic Workflow Suite: Privacy-First AI-Assisted TMA Marking},
author = {{Academic Workflow Suite Contributors}},
year = 2025,
version = {0.1.0},
url = {https://github.com/academic-workflow-suite},
license = {PMPL-1.0},
keywords = {education, AI, privacy, marking, assessment}
}If you publish research about AWS, please let us know! We maintain a [Publications](https://aws-edu.org/publications) page.
Thank you to all our contributors:
-
See [Contributors](https://github.com/academic-workflow-suite/graphs/contributors) for full list
This project was inspired by:
-
Open University Associate Lecturers who dedicate countless hours to student feedback
-
Privacy-preserving AI research from academia
-
Open-source education tools like Moodle, Open edX, and Jupyter
Built with excellent open-source technologies:
| Technology | License | Purpose | |------------|---------|---------| | [Rust](https://www.rust-lang.org/) | MIT/Apache-2.0 | Core engine | | [ReScript](https://rescript-lang.org/) | MIT | Frontend | | [Actix-Web](https://actix.rs/) | MIT/Apache-2.0 | Web framework | | [LMDB](https://www.symas.com/lmdb) | OpenLDAP | Database | | [ONNX Runtime](https://onnxruntime.ai/) | MIT | AI inference | | [Docker](https://www.docker.com/) | Apache-2.0 | Containerization | | [Office.js](https://docs.microsoft.com/en-us/office/dev/add-ins/) | MIT | Word integration |
This project is currently self-funded by contributors. If you’d like to support development:
-
[GitHub Sponsors](https://github.com/sponsors/academic-workflow-suite)
-
[Open Collective](https://opencollective.com/aws-edu)
-
Version: 0.1.0 (Initial Release)
-
Status: Beta - Ready for testing
-
Stability: Experimental - Use with caution in production
| Platform | Status | Notes |
|----------|--------|-------|
| Windows 10/11 | ✅ Supported | Tested on Word 2019, Office 365 |
| macOS 11+ | ✅ Supported | Intel and Apple Silicon |
| Linux (Ubuntu) | ✅ Supported | 20.04 LTS and later |
| Linux (Other) |
-
AI models: Currently English-only
-
Office: Word only (Excel/PowerPoint not supported)
-
Moodle: Integration not yet available (v0.2.0)
-
Batch processing: Limited to 100 TMAs at once
Stay informed about releases:
-
[Release Notes](https://github.com/academic-workflow-suite/releases) - All releases
-
[Newsletter](https://aws-edu.org/newsletter) - Monthly updates
-
[RSS Feed](https://github.com/academic-workflow-suite/releases.atom) - Release notifications
-
[Twitter](https://twitter.com/aws_edu) - Announcements
-
[Moodle](https://moodle.org/) - Open-source LMS
-
[Open edX](https://open.edx.org/) - MOOC platform
-
[Gradescope](https://www.gradescope.com/) - Grading platform
-
[Turnitin](https://www.turnitin.com/) - Plagiarism detection
-
[Zotero](https://www.zotero.org/) - Reference management
-
[LaTeX](https://www.latex-project.org/) - Document preparation
-
[Jupyter](https://jupyter.org/) - Interactive notebooks
-
[Hypothesis](https://web.hypothes.is/) - Web annotation
-
Homepage: https://aws-edu.org
-
Documentation: https://docs.aws-edu.org
-
Blog: https://blog.aws-edu.org
-
Twitter: [@aws_edu](https://twitter.com/aws_edu)
-
LinkedIn: [AWS Education](https://linkedin.com/company/aws-edu)
-
YouTube: [AWS Tutorials](https://youtube.com/@aws-edu)
-
General Inquiries: hello@aws-edu.org
-
Support: support@aws-edu.org
-
Press: press@aws-edu.org
-
Security: security@aws-edu.org
<div align="center">
If you find AWS useful, please consider starring the repository. It helps others discover the project!
[](https://github.com/academic-workflow-suite/aws)
Made with ❤️ by educators, for educators
Privacy-first • Open-source • Community-driven
Academic Workflow Suite - Empowering educators while protecting student privacy
</div>
Last Updated: 2025-11-22 Version: 0.1.0 Status: Beta Release