Built with AI

How we built NubiferOS using AI-assisted development with Kiro, Claude, and spec-driven workflows

NubiferOS was built using AI-assisted development tools. This page documents our journey, the tools we used, and the lessons we learned building a complete Linux distribution with AI collaboration.

The Tools

We used three primary AI tools throughout development:

ToolRoleWhy We Chose It
KiroIDE + Spec-driven developmentStructured workflow from requirements → design → tasks
Claude OpusPrimary AI modelDeep reasoning, complex problem-solving, long context
Claude SonnetInitial developmentFaster iteration during early prototyping

The Timeline

PhasePeriodFocus
Initial PrototypingOct-Nov 2025Architecture decisions, component design
Core DevelopmentDec 2025 - Jan 2026Build system, installer, security hardening
Model UpgradeJanuary 2026Switched from Sonnet to Opus
Polish & DocumentationJan-Feb 2026Website, documentation, testing

Total development time: ~3-4 months from first commit to alpha release.

Spec-Driven Development

Kiro's spec-driven workflow was central to our development process:

┌─────────────────────────────────────────────────────────┐
│  1. Requirements                                        │
│     User stories + acceptance criteria                  │
├─────────────────────────────────────────────────────────┤
│  2. Design                                              │
│     Architecture, components, interfaces                │
├─────────────────────────────────────────────────────────┤
│  3. Tasks                                               │
│     Ordered implementation checklist                    │
├─────────────────────────────────────────────────────────┤
│  4. Implementation                                      │
│     AI executes tasks with human review                 │
└─────────────────────────────────────────────────────────┘

Why Spec-Driven Works

BenefitHow It Helped
Structured thinkingForced us to define requirements before coding
Traceable decisionsEvery feature links back to a user story
Incremental progressClear task list with checkboxes
Context preservationSpecs survive session boundaries
Human oversightReview points at each phase

Example: Credential Manager Spec

Our credential manager started as a user story:

"As a cloud engineer, I want my credentials encrypted at rest, so that a stolen laptop doesn't expose my AWS keys."

This became acceptance criteria:

  • Credentials encrypted with GPG
  • Master key stored in system keyring
  • No plaintext credentials on disk
  • Automatic credential injection into CLIs

Which became a design with specific components, then tasks we could execute one by one.

Challenges

Building a Linux distribution with AI assistance wasn't without obstacles:

Calamares Installer Issues

ProblemWhat HappenedSolution
LUKS configurationInstaller didn't properly configure encrypted bootCustom preseed scripts + manual GRUB configuration
Partition detectionCalamares struggled with complex partition schemesSimplified to single encrypted root + swap
Post-install hooksScripts ran in wrong orderExplicit dependency ordering in modules

GRUB Bootloader Challenges

ProblemWhat HappenedSolution
Encrypted /bootGRUB couldn't find kernel after encryptionLUKS1 for /boot (GRUB limitation)
Initramfs generationMissing cryptsetup modulesCustom initramfs hooks
EFI vs BIOSDifferent code paths for eachUnified installer with detection

Session Length Limits

ProblemWhat HappenedSolution
Context lossLong sessions lost earlier contextSpec files as persistent context
Repeated errorsAI would make same mistakes after context resetDocument solutions in steering files
Complex debuggingMulti-file issues hard to track across sessionsDetailed error logs + reproduction steps

Model Limitations

ProblemWhat HappenedSolution
Sonnet repetitionWould repeat same incorrect approachSwitched to Opus for complex problems
Credit limitsHit API limits during intensive developmentBatch similar tasks, prioritize complex work
Shell script errorsSubtle bash syntax issuesExplicit shellcheck validation

What Worked

AI Strengths

AreaWhy AI Excelled
DocumentationGenerated comprehensive docs from code
BoilerplateSystemd units, AppArmor profiles, config files
ResearchComparing approaches, finding best practices
RefactoringConsistent changes across many files
TestingGenerating test cases from requirements

Human Strengths

AreaWhy Humans Were Essential
Architecture decisionsHigh-level design choices
Security reviewValidating security claims
User experienceWhat feels right to use
Edge casesReal-world scenarios AI missed
Final approvalEvery change reviewed before merge

Lessons Learned

For AI-Assisted Development

LessonDetails
Specs are essentialWithout structured requirements, AI wanders
Small tasks work betterBreak complex work into focused chunks
Context is kingProvide relevant files, not everything
Verify, don't trustAI makes confident mistakes
Document solutionsPrevent repeating solved problems

For Building with AI

LessonDetails
Start with architectureAI can't design systems from scratch well
Use proven toolsAI excels at integrating existing solutions
Test incrementallyCatch issues before they compound
Keep humans in the loopReview every significant change
Embrace iterationFirst attempt rarely perfect

The Numbers

MetricValue
Development time~3-4 months
Total lines of code~39,300 (Python + Shell across NubiferOS and NubiferAI)
Total lines of documentation~57,500 (Markdown across all projects + website)
Spec documents15+ requirement/design docs
Components built8 custom components
Tools integrated50+ cloud tools
Documentation pages30+ pages
Security layers8 defense-in-depth layers

Why Share This

Transparency is a core value of NubiferOS. We believe in:

PrincipleApplication
Honest about our processAI helped build this—we're not hiding it
Reproducible methodsOthers can learn from our approach
Continuous improvementSharing invites feedback
Demystifying AI developmentIt's a tool, not magic

Try It Yourself

Interested in spec-driven AI development?

ResourceLink
Kiro IDEkiro.dev
Claudeclaude.ai
Our SpecsGitHub - custom-linux-distro tasks
NubiferOS SourceGitHub Repository

Explore NubiferOS

ResourceLink
DownloadGet NubiferOS
FeaturesWhat's included
Why NubiferOS?How we compare to alternatives
SecuritySecurity architecture
NubiferAIAI-native cloud operations
AboutProject philosophy and roadmap
CommunityJoin the community