feat: initial commit - founding documents
This commit is contained in:
commit
65a0e268c0
7 changed files with 123 additions and 0 deletions
32
.gitignore
vendored
Normal file
32
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# OS generated files
|
||||||
|
.DS_Store
|
||||||
|
.DS_Store?
|
||||||
|
._*
|
||||||
|
.Spotlight-V100
|
||||||
|
.Trashes
|
||||||
|
ehthumbs.db
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Build output directories
|
||||||
|
/build/
|
||||||
|
/out/
|
||||||
|
/dist/
|
||||||
|
*.iso
|
||||||
|
*.img
|
||||||
|
*.tar.gz
|
||||||
|
|
||||||
|
# Keys and secrets
|
||||||
|
*.key
|
||||||
|
*.pem
|
||||||
|
*.crt
|
||||||
|
id_rsa
|
||||||
|
id_ed25519
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# Temporary files
|
||||||
|
*.tmp
|
||||||
|
*.bak
|
||||||
|
*.swp
|
||||||
|
*~
|
||||||
11
README.md
Normal file
11
README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Sawa Server (SS)
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
Sawa Server (CodeName: SS) is an Alpine Linux-based USB server node project. The primary deliverable is a customized, bootable USB stick that instantly provisions a machine as a Sawa network node.
|
||||||
|
|
||||||
|
**Note: This is NOT a web application.** It is an infrastructure project focused on system-level configuration, network provisioning, and hardware abstraction using the lightweight and secure Alpine Linux environment.
|
||||||
|
|
||||||
|
## Vision
|
||||||
|
The vision for Sawa Server is to create a zero-touch, highly resilient, disposable infrastructure layer. By booting entirely from a USB drive (and eventually running diskless in RAM), nodes can be deployed instantly, wiped cleanly without leaving traces on the host machine, and replaced seamlessly in the Sawa mesh network.
|
||||||
|
|
||||||
|
MVP Success Criteria: Insert USB into any x86_64 machine, power on, complete ss-init wizard in under 10 minutes, node is online and visible to the Sawa network.
|
||||||
9
docs/CHANGELOG.md
Normal file
9
docs/CHANGELOG.md
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to the Sawa Server (SS) project will be documented in this file.
|
||||||
|
|
||||||
|
## [v0.1.0] - Current State
|
||||||
|
### Added
|
||||||
|
- Initial project scaffolding and core founding documents.
|
||||||
|
- Defined project vision, roadmap phases, and AI guidelines.
|
||||||
|
- Established Git repository structure and contribution conventions.
|
||||||
15
docs/CLAUDE.md
Normal file
15
docs/CLAUDE.md
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
# AI Agent Instructions for Sawa Server (SS)
|
||||||
|
|
||||||
|
You are assisting with the **sawa-server** project.
|
||||||
|
|
||||||
|
## Project Context
|
||||||
|
- **Name:** sawa-server
|
||||||
|
- **Codename:** SS
|
||||||
|
- **Nature of the project:** Alpine Linux USB server node project. This is **NOT** a web app. The end product is a bootable USB stick.
|
||||||
|
|
||||||
|
## Guidelines
|
||||||
|
1. **System-Level Focus:** Focus on shell scripting, Alpine Linux package management (`apk`), system services (`OpenRC`), minimal disk partitioning, and network configurations.
|
||||||
|
2. **Minimalism:** Alpine Linux is strictly minimal. Always prefer lightweight native tools (e.g., `busybox`, `ash` instead of `bash`).
|
||||||
|
3. **No Web Frameworks:** Do not suggest Node.js, React, or any web frameworks unless explicitly requested for a localized control interface.
|
||||||
|
4. **Resiliency & State:** The system will transition to running diskless in RAM. Data persistence requires specific Alpine tools like Alpine Local Backup (`lbu`). Commands must respect this ephemeral environment.
|
||||||
|
5. **Project Structure:** *Never* use the project root folder for new files unless absolutely necessary. Place all documentation (except `README.md`) in the `docs/` folder and organize source code into appropriate subdirectories. `README.md` must stay in the project root for git forge display.
|
||||||
21
docs/CONTRIBUTING.md
Normal file
21
docs/CONTRIBUTING.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
# Contributing to Sawa Server
|
||||||
|
|
||||||
|
Thanks for contributing to Sawa Server (SS)!
|
||||||
|
|
||||||
|
## Commit Conventions
|
||||||
|
We follow the same commit conventions as the `sawa-control-panel` project. Please ensure your commits adhere to these rules:
|
||||||
|
|
||||||
|
- **feat:** A new feature (e.g., `feat: add ss-init script for first boot`)
|
||||||
|
- **fix:** A bug fix (e.g., `fix: resolve issue with lbu commit on unmounted drive`)
|
||||||
|
- **docs:** Documentation only changes
|
||||||
|
- **style:** Changes that do not affect the meaning of the code (formatting, missing spaces, etc.)
|
||||||
|
- **refactor:** A code change that neither fixes a bug nor adds a feature
|
||||||
|
- **perf:** A code change that improves performance
|
||||||
|
- **test:** Adding missing tests or correcting existing tests
|
||||||
|
- **chore:** Changes to the build process or auxiliary tools and scripts
|
||||||
|
|
||||||
|
Please write your commit messages in the imperative mood (e.g., "Add feature" instead of "Added feature").
|
||||||
|
|
||||||
|
## General Guidelines
|
||||||
|
- Keep scripts POSIX-compliant or standard `ash` compatible, given our Alpine Linux environment.
|
||||||
|
- Test changes on actual bootable media or a compatible VM before submitting.
|
||||||
9
docs/ISSUES.md
Normal file
9
docs/ISSUES.md
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
# Open Issues
|
||||||
|
|
||||||
|
## Phase 1 & 2 Blockers
|
||||||
|
- **[ISSUE-1] Base Image Selection:** Determine exactly which Alpine Linux flavor (Standard vs. Extended) provides the best balance of required packages and size for our base image.
|
||||||
|
- **[ISSUE-2] Core Package List:** Define the minimal set of `apk` packages that must be injected into the base build before Phase 2.
|
||||||
|
- **[ISSUE-3] `ss-init` Prompt Design:** Outline the exact parameters the first boot wizard needs to ask the user (e.g., hostname, static IP vs DHCP, mesh participation rules).
|
||||||
|
|
||||||
|
## General
|
||||||
|
- **[ISSUE-4] Hardware Compatibility:** Document any known USB boot issues, UEFI/BIOS quirks, or secure boot obstacles on target hardware architectures.
|
||||||
26
docs/ROADMAP.md
Normal file
26
docs/ROADMAP.md
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Sawa Server (SS) Roadmap
|
||||||
|
|
||||||
|
## Phase 1: Base Alpine USB Build
|
||||||
|
- Prepare base Alpine Linux USB boot medium.
|
||||||
|
- Establish `sys` mode installation (current state).
|
||||||
|
- Document current baseline configuration and manual build steps.
|
||||||
|
|
||||||
|
## Phase 2: First Boot Wizard
|
||||||
|
- Develop the `ss-init` interactive initialization script.
|
||||||
|
- Automate initial network configuration, key generation, and identity setup.
|
||||||
|
- Provide a seamless onboarding experience upon first boot.
|
||||||
|
- ss-init completion time target: under 10 minutes from power-on to node online.
|
||||||
|
|
||||||
|
## Phase 3: Diskless/RAM Mode
|
||||||
|
- Transition from `sys` mode to a diskless setup running entirely in RAM.
|
||||||
|
- Implement Alpine Local Backup (`lbu`) for intentional state persistence across reboots.
|
||||||
|
- Optimize image size and boot speed for rapid node deployment.
|
||||||
|
|
||||||
|
## Phase 4: Node Cloning and Imaging Tools
|
||||||
|
- Create scripts and tools to rapidly clone the configured USB stick.
|
||||||
|
- Automate the flashing process for mass deployment of replica nodes.
|
||||||
|
|
||||||
|
## Phase 5: Multi-node Discovery and Mesh
|
||||||
|
- Implement network discovery protocols for peer-to-peer awareness.
|
||||||
|
- Configure automatic mesh networking between multiple SS nodes on the same network.
|
||||||
|
- Establish secure inter-node communication and load distribution.
|
||||||
Loading…
Reference in a new issue