diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md new file mode 100644 index 0000000..c3dec94 --- /dev/null +++ b/docs/ARCHITECTURE.md @@ -0,0 +1,24 @@ +# IX System Architecture + +## Infrastructure + +``` +inference-x.com (ARCHE · OVH) build.inference-x.com (OASIS · Hetzner) +├── nginx reverse proxy ├── ix-saas (Node.js, PM2, port 4080) +├── Gitea (port 3000) ├── echo brain (port 8089) +└── Site vitrine (HTML) ├── invoke gateway (port 3001) + └── OneCloud VM pool (demos) +``` + +## Demo Flow +Visitor → POST /api/demo/start → OneCloud VM (2vCPU/2GB) → IX engine → LLaMA 3.2 1B → SSE stream → Chat → 30min → VM destroyed + +## Plans (Test Mode) +- Community: Free forever, full local engine +- Studio Test: Free, 2vCPU cloud instance, store access +- Enterprise Test: Free, 8vCPU/32GB, forge, store publish + +## API +Public: /api/health, /api/demo/stats, /api/demo/start, /api/demo/stream/:token, /api/community/scout +Auth: /api/auth/register, /api/auth/login, /api/builds, /api/instance/provision, /api/store + diff --git a/scripts/install.sh b/scripts/install.sh new file mode 100644 index 0000000..f397798 --- /dev/null +++ b/scripts/install.sh @@ -0,0 +1,164 @@ +#!/bin/bash +# IX Universal Installer — inference-x.com +# Detects OS/arch, downloads correct binary, sets up config + +set -e + +VERSION="latest" +BASE_URL="https://inference-x.com/releases" +IX_HOME="$HOME/.inference-x" +BIN_DIR="/usr/local/bin" + +RED='\033[0;31m'; GREEN='\033[0;32m'; TEAL='\033[0;36m'; AMBER='\033[0;33m'; NC='\033[0m' +log() { echo -e "${TEAL}[IX]${NC} $1"; } +ok() { echo -e "${GREEN}[✓]${NC} $1"; } +warn() { echo -e "${AMBER}[!]${NC} $1"; } +err() { echo -e "${RED}[✗]${NC} $1"; exit 1; } + +detect_platform() { + local OS=$(uname -s | tr '[:upper:]' '[:lower:]') + local ARCH=$(uname -m) + case "$OS" in + linux) + case "$ARCH" in + x86_64) PLATFORM="linux-x64" ;; + aarch64) PLATFORM="linux-arm64" ;; + armv7l) PLATFORM="linux-armv7" ;; + *) err "Unsupported arch: $ARCH" ;; + esac ;; + darwin) + case "$ARCH" in + arm64) PLATFORM="macos-arm64" ;; + x86_64) PLATFORM="macos-x64" ;; + *) err "Unsupported arch: $ARCH" ;; + esac ;; + *) err "Unsupported OS: $OS. Use Windows installer from inference-x.com" ;; + esac + log "Detected: $OS/$ARCH → $PLATFORM" +} + +detect_backend() { + BACKEND="cpu" + if command -v nvidia-smi &>/dev/null; then + BACKEND="cuda" + ok "NVIDIA GPU detected — CUDA backend will be used" + elif [[ "$(uname -s)" == "Darwin" && "$(uname -m)" == "arm64" ]]; then + BACKEND="metal" + ok "Apple Silicon detected — Metal backend will be used" + elif command -v vulkaninfo &>/dev/null; then + BACKEND="vulkan" + ok "Vulkan detected" + else + log "Using CPU backend (universal)" + fi +} + +download_ix() { + local URL="$BASE_URL/ix-$PLATFORM" + log "Downloading IX engine from $URL..." + + # Try multiple mirrors + local MIRRORS=( + "https://inference-x.com/releases" + "https://git.inference-x.com/elmadani/inference-x/releases/download/latest" + ) + + local downloaded=false + for mirror in "${MIRRORS[@]}"; do + if curl -fsSL "$mirror/ix-$PLATFORM" -o /tmp/ix-binary 2>/dev/null; then + downloaded=true + break + fi + done + + if [ "$downloaded" = false ]; then + warn "Binary download unavailable. Building from source..." + build_from_source + return + fi + + chmod +x /tmp/ix-binary + ok "Downloaded IX binary" +} + +build_from_source() { + log "Building IX from source (requires git, cmake, make, gcc)..." + local tmp=$(mktemp -d) + git clone --depth=1 https://git.inference-x.com/elmadani/inference-x.git "$tmp/ix" 2>&1 | tail -3 + cd "$tmp/ix" + cmake -B build -DCMAKE_BUILD_TYPE=Release 2>&1 | tail -3 + cmake --build build -j$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 2) 2>&1 | tail -5 + cp build/bin/ix /tmp/ix-binary + chmod +x /tmp/ix-binary + cd - + ok "Built from source" +} + +install_ix() { + mkdir -p "$IX_HOME" "$IX_HOME/models" "$IX_HOME/organs" "$IX_HOME/configs" + + if [ -w "$BIN_DIR" ]; then + cp /tmp/ix-binary "$BIN_DIR/ix" + ok "Installed to $BIN_DIR/ix" + else + sudo cp /tmp/ix-binary "$BIN_DIR/ix" + ok "Installed to $BIN_DIR/ix (sudo)" + fi + + # Default config + cat > "$IX_HOME/configs/default.json" << CONFIG +{ + "version": "1.0", + "engine": "inference-x", + "hardware": { "backend": "$BACKEND" }, + "model": { + "id": "llama3.2-1b", + "context_size": 4096, + "max_tokens": 512 + }, + "persona": { + "name": "Assistant", + "system_prompt": "You are a helpful, private AI assistant. You run locally. No data leaves this device.", + "temperature": 0.7 + }, + "server": { "port": 8080, "bind": "127.0.0.1" } +} +CONFIG + ok "Default config created at $IX_HOME/configs/default.json" +} + +print_success() { + echo "" + echo -e "${GREEN}╔══════════════════════════════════════════╗${NC}" + echo -e "${GREEN}║ Inference-X installed successfully! ║${NC}" + echo -e "${GREEN}╚══════════════════════════════════════════╝${NC}" + echo "" + echo -e " ${TEAL}Start IX:${NC} ix --config ~/.inference-x/configs/default.json" + echo -e " ${TEAL}API:${NC} http://localhost:8080/v1/chat/completions" + echo -e " ${TEAL}Models:${NC} ~/.inference-x/models/" + echo -e " ${TEAL}Organs:${NC} ~/.inference-x/organs/" + echo -e " ${TEAL}Builder:${NC} https://build.inference-x.com" + echo -e " ${TEAL}Docs:${NC} https://git.inference-x.com/elmadani/ix-tools" + echo "" + echo -e " ${AMBER}First model download:${NC}" + echo -e " ix download llama3.2-1b # Fastest (1GB)" + echo -e " ix download mistral-7b # Best quality (4GB)" + echo "" +} + +main() { + echo "" + echo -e "${TEAL}════════════════════════════════════════${NC}" + echo -e "${TEAL} Inference-X Universal Installer ${NC}" + echo -e "${TEAL} Built in Morocco · For Everyone ${NC}" + echo -e "${TEAL}════════════════════════════════════════${NC}" + echo "" + + detect_platform + detect_backend + download_ix + install_ix + print_success +} + +main "$@" diff --git a/site/saas/index.html b/site/saas/index.html new file mode 100644 index 0000000..3d3b3de --- /dev/null +++ b/site/saas/index.html @@ -0,0 +1,1406 @@ + + + + + +Inference-X Build — Try Free · Build · Deploy + + + + + + + +
+ + + / Build + + +
+ ← Main site + Git ↗ +
+
+ + +
+ total demos run + 🟢 0 instances active now + demos today + 🌍 5 continents · Real hardware · 30 min · Auto-destroy +
+ + +
+
+
+ + Free demo · No account needed +
+

Try a real AI.
Right now.

+

We spin up an actual server in a real datacenter, install the Inference-X engine, load an AI model, and give you a live chat interface. Everything is erased when you're done. No data stored. No account created.

+ +
+ + + + + +
+ +
+ +
+ ✓ No account  ·  ✓ No credit card  ·  ✓ 30 min  ·  ✓ Auto-erased +
+
+ + + + + +
+
+
📦 Take this home
+
Your config + chat history — run this locally forever
+
+ +
+
+ + +
+
+
+
+
+
+
+
ix-demo · waiting...
+ +
+
+ + +
+
00:00Inference-X Demo Terminal —
+
+ + + + + + +
+
+ +
+ + +
+
+
+ +
+
📦 16 repos
+
🌍 3 public
+
👥 Community
+ Browse All → +
+
+
+ +
+
+
Open Source Community
+
Build the future.
Together.
+
These three repositories are the foundation. Fork them. Build on them. Propose your changes. The community makes the decisions — no single company controls the roadmap.
+
+ +
+ +
+
+
+
+ inference-x +
+
elmadani/inference-x
+
+ BSL 1.1 +
+
Universal AI inference engine — 305 KB, 19 hardware backends, zero dependencies. The core: loads any GGUF model, exposes an OpenAI-compatible API, runs on any hardware from Raspberry Pi to data center GPU clusters.
+
+
+
🍴
+
📝 C++ · CMake
+
+
+ ai-inference + c++ + openai-compatible + offline + 19-backends +
+ +
+ + +
+
+
+
+ 🔧 ix-tools +
+
elmadani/ix-tools
+
+ MIT +
+
CLI tools, deployment scripts, model downloader, benchmark suite. Everything you need to set up, configure, and monitor your Inference-X deployment. Install scripts for all platforms.
+
+
+
🍴
+
📝 Shell · Python
+
+
+ cli + installer + benchmarks + python +
+ +
+ + +
+
+
+
+ 📖 ElmadaniS +
+
elmadani/ElmadaniS
+
+ Public +
+
The founder's public work — mathematical frameworks, philosophical essays, project architecture documents. Understand the vision behind Inference-X: why it was built, where it's going, and the H5→H6 consciousness framework.
+
+
+
🍴
+
📝 Markdown · Math
+
+
+ philosophy + mathematics + z-equation + vision +
+ +
+
+ + +
+
+
Want to contribute?
+
Fork any repo · Open an issue · Submit a PR · Propose your craton · Join the builders
+
+
+ Open Issue + Contact → +
+
+
+
+ +
+ + +
+
+
Configuration Builder
+
Build your
custom AI.
+
Configure your IX deployment for your exact hardware and use case. Generate a ready-to-run config file you can deploy anywhere.
+
+ +
+
+
🖥 Hardware
+
🧠 Model
+
🎭 Persona
+
📦 Export
+
+ + +
+
+
+ + +
+
+ + +
+
+
+ +
8 GB
+ +
Models that fit your hardware:
+
+
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+
+ + +
+
+
Generated configuration:
+

+      
+
+ + +
+
+ Quick start:
+ 1. Download the config above
+ 2. Download the IX binary: inference-x.com#start
+ 3. Run: ./ix --config ix-config.json +
+
+
+
+ +
+ + +
+
+
Community Compute
+
Power the demos.
Earn your place in history.
+
+ +
+
+

The Provider Pool.

+

Every free demo needs real compute. Community providers contribute their idle server capacity. In return, they're credited publicly, gain early access to future IX frameworks, and become part of the infrastructure that democratizes AI.

+

Pioneer providers will have priority integration when the Echo Relay (federated inference network) launches.

+
+
Your name/brand displayed as compute provider on every demo
+
Daily cost limit you control — never exceed your budget
+
Keys encrypted server-side — never exposed to public
+
Early access: Echo Relay framework for distributed providers
+
OneCloud, Hetzner, OVH or any API-compatible provider
+
+
+
+

🔋 Contribute compute

+ + + + + + +
Keys encrypted · Used only for IX demos · Revokable anytime
+ +
+
+ + +
+
Active pool contributors
+
No providers yet — be the first to contribute compute.
+
+
+ +
+ + +
+
+
+
Community Hardware
+
Global IX nodes — live.
+
+ Full map → +
+ + + + + + + +
BackendNodesAvg tok/sLoadStatus
Loading community nodes...
+
+ Run IX with --scout report to appear on this map. Your IP is never shown. +
+
+ +
+ + +
+
+
Pricing — Fair by design
+
Free for people.
Fair for business.
+
80% of all commercial revenue flows directly to community contributors. Individuals, researchers, students and small startups pay nothing. Always.
+
+ +
+ +
+
Community
+
$0/always
+
For individuals, researchers, students, open-source projects. Full engine, no limits on personal use. Forever free.
+
+
Full IX engine binary (305KB)
+
All 19 hardware backends
+
All GGUF models
+
Unlimited local API calls
+
Builder configs
+
Community support (Gitea issues)
+
Managed cloud instance
+
+ Download → +
+ + + + + +
+
Enterprise
+
$0/ test now
+
Test every Enterprise feature — dedicated 8vCPU/32GB server, model store publisher, forge tools. Full sandbox, no payment.
+
+
Everything in Studio
+
Dedicated server (8vCPU/32GB) — TEST
+
Unlimited API calls — TEST
+
Model Store: publish & sell — TEST
+
Forge tools access — TEST
+
Full Organ Store API — TEST
+
Community builder dashboard — TEST
+
+ +
+
+ +
+ 💛 Prefer to support without a plan? Donate via PayPal — Infrastructure costs €53/month. Every euro powers the khettara. +
+
+ + + + + + + diff --git a/site/vitrine/index.html b/site/vitrine/index.html new file mode 100644 index 0000000..aa3c59d --- /dev/null +++ b/site/vitrine/index.html @@ -0,0 +1,984 @@ + + + + + +Inference-X — Intelligence for Everyone + + + + + + + + + + + +
+
+
+
+
🌍 Built in Morocco for the world
+

+ Intelligence,
for everyone.
No permission needed. +

+

305KB. Runs on your phone, your laptop, your server. Free forever. No cloud, no account, no limit. The AI belongs to whoever runs it.

+
+
305KBEntire engine
+
19Hardware backends
+
23Model formats
+
API calls · forever free
+
$0Per year · your hardware
+
+ +
+
+ + +
+
What is this
+

Three things to know. Nothing more.

+

No degree required. If you have a device, you have AI.

+
+
+ 📦 +

It's a tiny file

+

305 kilobytes. Smaller than a photo on your phone. This file lets your computer run AI — any AI — without the internet. Download it, run it. That's it.

+
+
+ 🔒 +

Your words stay yours

+

When you use AI online, your questions travel to a distant server. Someone can read them. With Inference-X, nothing leaves your machine. Ever.

+
+
+ +

It runs on anything

+

Old laptop, new phone, Raspberry Pi, datacenter. Same file. It detects your hardware and uses it. No configuration needed.

+
+
+
+ + +
+
Your hardware
+

What can YOUR computer do?

+

Move the slider to your RAM. See what's possible.

+
+
+
+ 1 GB4 GB8 GB16 GB32 GB64 GB128+ GB +
+ +
+

RAM: 8 GB — showing models that fit

+
+

Your AI runs locally. No internet. No account. Free forever.

+
+
+ + +
+
Privacy
+

Where do your words go?

+
+
+
Cloud AI
+

Your question leaves your device, crosses the internet, reaches a server in another country, gets processed, stored, and analyzed. You pay per word.

+
⚠ Your data · their server · their rules
+
+
+
Inference-X
+

Your question stays on your desk. The answer is computed by your own processor. Nothing leaves. Nothing is stored. You pay nothing.

+
✓ Your data · your processor · your rules
+
+
+
+ + +
+
Footprint
+

How small is 305 KB?

+

The entire AI engine — smaller than what you think.

+
+
+
+ Inference-X + 305 KB +
+
+
+ iPhone photo + ~3 MB +
+
+
+ Average app + ~50 MB +
+
+
+ Chrome + ~200 MB +
+
+

All 19 hardware targets, all 23 formats — in less space than a single photo on your phone.

+
+ + +
+
The engine
+

One binary to run them all.

+

Written in C++. No dependencies. No runtime. No cloud. Any silicon, any OS, any AI model.

+
+
CUDANVIDIA GPU
+
MetalApple Silicon
+
VulkanAny GPU
+
ROCmAMD GPU
+
OpenCLAny GPU
+
SYCLIntel GPU
+
CPU x86Intel/AMD
+
CPU ARMMobile/Pi
+
RISC-VEmerging
+
WebGPUBrowser
+
TPUGoogle
+
FPGACustom HW
+
InferentiaAWS
+
GaudiIntel
+
GroqLPU
+
CerebrasWafer
+
SambaNovaRDU
+
GraphcoreIPU
+
Custom+ your HW
+
+
+
Zero-Copy Inference
Dequantization and matrix multiply in one instruction loop. No intermediate buffer.
+
Trillion-Parameter Native
Only active experts exist in memory. A 1T-parameter model runs on 64 GB RAM.
+
Smart Precision
Simple questions get compressed layers. Complex reasoning gets full precision.
+
Zero Telemetry
No network calls. No phone-home. Works on a plane, in a submarine, on the moon.
+
Auto-Detect
Architecture, chat templates, EOS tokens — auto-detected from model metadata.
+
Self-Configuring
The Makefile detects your hardware. You don't configure it — it configures itself.
+
+
+ + +
+
What runs on it
+

Any GGUF model. Zero setup.

+

Download a model from HuggingFace or Ollama. Drop it in. Run it. These are models we've benchmarked.

+
+
+
LLaMA 3.2 · 1B
+
Quick answers. Tiny device. Lightning fast.
+
1 GB RAMmobile-readyfast
+
+
+
Mistral · 7B
+
Smart conversations, code help, translations.
+
5 GB RAMmultilingual
+
+
+
LLaMA 3.1 · 8B
+
Meta's compact model. Great reasoning at low cost.
+
6 GB RAMreasoning
+
+
+
Mistral · 22B
+
Creative writing, analysis, multilingual expert.
+
16 GB RAMcreative
+
+
+
LLaMA 3.1 · 70B
+
Full-featured assistant. Code. Math. Logic.
+
48 GB RAMcodemath
+
+
+
DeepSeek · 671B
+
Advanced reasoning. Expert-level answers. MoE architecture.
+
64 GB RAMexpertMoE
+
+
+
Phi-3 · 3.8B
+
Microsoft's small model. Punches far above its weight.
+
3 GB RAMefficient
+
+
+
Qwen 2.5 · 7B
+
Chinese-developed. Excellent for multilingual tasks.
+
5 GB RAMmultilingualcode
+
+
+
+ any GGUF
+
Download from HuggingFace. Drop in folder. Done.
+
any size
+
+
+
+ + +
+
The real cost
+

How much does AI cost?

+

Using AI 1 hour per day, every day, for a year.

+
+
+ +
$2,500+
+
per year · and rising · your data = their product
+
API key required · Rate limited · Terms can change
+
+
+ +
$0
+
forever · electricity only · your data stays yours
+
No API key. No subscription. No limit. Your hardware, your AI.
+
+
+
+ + +
+
For developers
+

OpenAI-compatible API

+

Start with --serve 8080. Drop-in replacement. Any client library works.

+
+ # Start the inference server
+ ./inference-x --model llama3.gguf --serve 8080

+ # Works with any OpenAI SDK
+ curl http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" \
+   -d '{"model":"llama3","messages":[{"role":"user","content":"Hello"}]}' +
+
+ POST /v1/chat/completions + POST /v1/completions + GET /v1/models + GET /health + GET /v1/embeddings +
+
+ + +
+
Get started
+

Ready? Three steps.

+

Pick your system.

+
+ + + + +
+
+
1
Download the binary
# x86_64 with CUDA/CPU
+curl -LO https://git.inference-x.com/elmadani/inference-x/releases/download/v1.0/ix-linux-x64
+chmod +x ix-linux-x64
+
2
Get a model
# Download any GGUF from HuggingFace
+wget https://huggingface.co/bartowski/Llama-3.2-1B-Instruct-GGUF/resolve/main/Llama-3.2-1B-Instruct-Q4_K_M.gguf
+
3
Run it
./ix-linux-x64 --model Llama-3.2-1B-Instruct-Q4_K_M.gguf
# or serve as API:
./ix-linux-x64 --model Llama-3.2-1B-Instruct-Q4_K_M.gguf --serve 8080
+
+
+
1
Download (Apple Silicon native)
curl -LO https://git.inference-x.com/elmadani/inference-x/releases/download/v1.0/ix-macos-arm64
+chmod +x ix-macos-arm64
+
2
Get a model
# Metal GPU acceleration automatic on Apple Silicon
+wget https://huggingface.co/bartowski/Llama-3.2-1B-Instruct-GGUF/resolve/main/Llama-3.2-1B-Instruct-Q4_K_M.gguf
+
3
Run it
./ix-macos-arm64 --model Llama-3.2-1B-Instruct-Q4_K_M.gguf
+
+
+
1
Download
# PowerShell
+Invoke-WebRequest -Uri "https://git.inference-x.com/elmadani/inference-x/releases/download/v1.0/ix-windows-x64.exe" -OutFile "ix.exe"
+
2
Get a model — download any .gguf file from HuggingFace
+
3
Run it
.\ix.exe --model model.gguf
+
+
+
1
ARM build for Raspberry Pi 4/5
curl -LO https://git.inference-x.com/elmadani/inference-x/releases/download/v1.0/ix-linux-arm64
+chmod +x ix-linux-arm64
+
2
Get a small model (fits in 1-4GB)
wget https://huggingface.co/bartowski/Llama-3.2-1B-Instruct-GGUF/resolve/main/Llama-3.2-1B-Instruct-Q4_K_M.gguf
+
3
Run on Pi
./ix-linux-arm64 --model Llama-3.2-1B-Instruct-Q4_K_M.gguf
# Pi 4 4GB: runs 1B models at ~8 tok/s
+
+
+ + +
+
Community
+

The tools we built together.

+

Inference-X is the core. Around it, the community builds the ecosystem. Here's what exists today — more is being forged every day.

+
+ + LIVE +
+
IX Engine
+
The core. 228KB C++ binary. 19 backends. Zero dependencies. The foundation everything runs on.
+
+ + LIVE +
🛠
+
Community SaaS
+
Cloud playground. Deploy models, test APIs, share with others. No installation. Donation-powered.
+
+
+ LIVE +
📡
+
Hardware Scout
+
See every IX node running globally. Real-time compute map. Who runs what, how fast.
+
+
+ BUILDING +
🫀
+
Organ Store
+
Extract, share and transplant AI model components. Attention heads, FFN layers, expert blocks. The future of open AI.
+
+
+ BUILDING +
🔬
+
Organ Architect
+
Analyze model internals. Visualize layers, heads, topology. Like an MRI for AI models.
+
+
+ BUILDING +
🔥
+
The Forge
+
Community fine-tuning platform. Contribute training data, improve models, share results. Collective intelligence.
+
+
+ COMING +
🎙
+
GhostVoice
+
Neural voice synthesis. Clone, create, share voice models. Same philosophy: local, private, yours.
+
+
+ COMING +
🌐
+
Echo Relay
+
Federated inference network. Your idle hardware earns you compute credits. The khettara for AI power.
+
+
+
+ + +
+
The future
+

AI organ transplants.

+

Neural networks have anatomy. Layers. Attention heads. Expert blocks. We built tools to extract them, study them, and transplant them between models. The community will fill the store.

+
+
🧠
+
+
⚙️
extract
+
+
🫀
+
+
💉
transplant
+
+
🧬
+
+
+ Vision: A community marketplace where builders extract specialized capabilities from models — multilingual reasoning, code completion, visual understanding — and share them as components others can transplant. The Organ Store doesn't exist yet. The community will build it. +
+
+
+
🔍
+
Analyze
+
Map model internals
+
+
+
⚗️
+
Extract
+
Isolate components
+
+
+
📦
+
Publish
+
Share to the store
+
+
+
💉
+
Transplant
+
Enhance any model
+
+
+
+ + +
+
+ +
+ "In the Moroccan desert, ancient builders carved underground canals — khettaras — that deliver water to entire villages using only gravity. No pump. No electricity. No central authority. They've worked for centuries. Inference-X is a khettara for intelligence: built by many, maintained by many, flowing to anyone who needs it." +
+

Inference-X has no enemies. Every researcher, every company, every government that processes AI is playing a role. We're not competing — we're building the infrastructure that makes all of it accessible to everyone who was left out.

+
+
+ + +
+
Community hardware
+

Every IX node on Earth. Live.

+

When you run Inference-X, you can optionally report your hardware telemetry. This is the network. Anonymous. Voluntary. Real.

+ + + + + + + + + + + + + +
BackendNodesAvg tok/sAvg loadStatus
Loading community hardware data...
+
+ + +
+
License
+

Free for those who need it. Fair for those who profit.

+

No tricks. No hidden limits. The engine is the same everywhere.

+
+ +
+
Commercial Fair
+
20% rev
+
Companies with $1M+ annual revenue using IX in production. 20% of revenue attributed to IX-powered features goes to the community fund. Transparent. Auditable.
+
80% flows to community builders
+
+
+
Industrial Embed
+
Custom
+
Hardware manufacturers embedding IX in products. Custom licensing for bulk distribution, signed binaries, hardware co-optimization. Contact us.
+
Redistribute · Co-brand · Optimize
+
+
+
+ + +
+
Join the builders
+

11 seats. One per craton.

+

The governance of Inference-X is anchored in geology. 11 ancient continental cratons — the most stable structures on Earth — give their names to 11 permanent Core Team seats. One per major civilization region. Designed to last as long as the rocks.

+
+
+
2.7 Ga · Africa
+
🪨 Anti-Atlas
+
Morocco · North Africa
+
⚒ Founder — Elmadani Salka
+
+
3.6 Ga · Africa
💎 Kaapvaal
South Africa, Botswana
+
2.9 Ga · Africa
🌍 West African
Ghana, Senegal, Mali
+
2.8 Ga · Africa
🌿 Congo
DRC, Republic of Congo
+
3.1 Ga · Americas
🍁 Superior
Canada, North America
+
2.5 Ga · Americas
🌳 Amazon
Brazil, South America
+
3.1 Ga · Europe
🌊 Baltica
Scandinavia, Eastern Europe
+
3.0 Ga · Asia
🌲 Siberian
Russia, Central Asia
+
3.8 Ga · Asia
🏮 North China
China, East Asia
+
3.0 Ga · Asia
🪷 Dharwar
India, South Asia
+
3.5 Ga · Oceania
🦘 Pilbara
Australia, Oceania
+
+
+
+
What craton leaders do
+
Represent their region in project decisions. Connect local builders. Translate and adapt for local communities. No salary — compensation is access, visibility, and history.
+
+ Apply for your craton → +
+
+ + + + + + + + + diff --git a/tools/compilation/build-linux-x64.sh b/tools/compilation/build-linux-x64.sh new file mode 100644 index 0000000..c31e209 --- /dev/null +++ b/tools/compilation/build-linux-x64.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# Build IX engine for Linux x86_64 with CUDA/CPU/Vulkan +set -e + +BACKEND=${1:-cpu} +OUTPUT="ix-linux-x64-$BACKEND" + +echo "[BUILD] Linux x64 | Backend: $BACKEND" +cmake -B build \ + -DCMAKE_BUILD_TYPE=Release \ + -DIX_BACKEND=${BACKEND^^} \ + -DCMAKE_C_FLAGS="-O3 -march=native" 2>&1 | tail -5 +cmake --build build --target ix -j$(nproc) 2>&1 | tail -5 +cp build/bin/ix "$OUTPUT" +echo "[✓] Built: $OUTPUT ($(wc -c < $OUTPUT) bytes)" diff --git a/tools/compilation/build-macos-arm64.sh b/tools/compilation/build-macos-arm64.sh new file mode 100644 index 0000000..d4b40c8 --- /dev/null +++ b/tools/compilation/build-macos-arm64.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# Build IX engine for macOS Apple Silicon (Metal) +set -e +cmake -B build -DCMAKE_BUILD_TYPE=Release -DIX_BACKEND=METAL -DCMAKE_OSX_ARCHITECTURES=arm64 2>&1 | tail -3 +cmake --build build --target ix -j$(sysctl -n hw.ncpu) 2>&1 | tail -3 +cp build/bin/ix ix-macos-arm64 +echo "[✓] Built: ix-macos-arm64" diff --git a/tools/forge.sh b/tools/forge.sh new file mode 100644 index 0000000..2275a14 --- /dev/null +++ b/tools/forge.sh @@ -0,0 +1,160 @@ +#!/bin/bash +# IX Forge — Model conversion and quantization pipeline +# Usage: ./forge.sh [options] +# Commands: convert, quantize, package, benchmark + +set -e + +IX_FORGE_VER="1.0.0" +LLAMA_CPP_DIR="${IX_LLAMA_CPP:-$HOME/.inference-x/llama.cpp}" +OUTPUT_DIR="${IX_OUTPUT:-./forge-output}" + +log() { echo -e "\033[0;36m[IX-FORGE]\033[0m $1"; } +ok() { echo -e "\033[0;32m[✓]\033[0m $1"; } +err() { echo -e "\033[0;31m[✗]\033[0m $1"; exit 1; } + +usage() { +cat << 'USAGE' +IX Forge v1.0 — Model conversion and quantization + +USAGE: + ./forge.sh convert --source --output + ./forge.sh quantize --input --quant Q4_K_M --output + ./forge.sh package --model --name "ModelName" --version 1.0 + ./forge.sh benchmark --model --prompt "Hello" --runs 10 + +QUANTIZATION LEVELS: + Q2_K — Smallest (50% quality loss, ~1.5bit) + Q4_0 — Small (faster, less accurate) + Q4_K_M — RECOMMENDED (best size/quality balance) + Q5_K_M — High quality + Q6_K — Near-lossless + Q8_0 — Near-perfect + F16 — Full precision (2x model size) + +EXAMPLES: + # Convert Mistral 7B from HuggingFace + ./forge.sh convert --source ./mistral-7b-v0.1 --output mistral-7b.gguf + + # Quantize to Q4_K_M + ./forge.sh quantize --input mistral-7b.gguf --quant Q4_K_M --output mistral-7b-q4.gguf + + # Full pipeline + ./forge.sh convert --source ./mymodel && ./forge.sh quantize --input mymodel.gguf --quant Q4_K_M + +USAGE +} + +check_llama_cpp() { + if [ ! -f "$LLAMA_CPP_DIR/convert_hf_to_gguf.py" ]; then + log "llama.cpp not found at $LLAMA_CPP_DIR" + log "Installing..." + mkdir -p "$LLAMA_CPP_DIR" + git clone --depth=1 https://github.com/ggerganov/llama.cpp.git "$LLAMA_CPP_DIR" 2>&1 | tail -3 + cd "$LLAMA_CPP_DIR" && cmake -B build -DLLAMA_BUILD_SERVER=OFF && cmake --build build -j4 2>&1 | tail -5 + cd - + ok "llama.cpp installed" + fi +} + +cmd_convert() { + local source="" output="" + while [[ $# -gt 0 ]]; do + case $1 in + --source) source="$2"; shift ;; + --output) output="$2"; shift ;; + esac; shift + done + [ -z "$source" ] && err "Missing --source" + [ -z "$output" ] && output="$(basename $source).gguf" + check_llama_cpp + mkdir -p "$OUTPUT_DIR" + log "Converting $source → $OUTPUT_DIR/$output" + python3 "$LLAMA_CPP_DIR/convert_hf_to_gguf.py" "$source" --outtype f16 --outfile "$OUTPUT_DIR/$output" + ok "Converted: $OUTPUT_DIR/$output ($(du -sh $OUTPUT_DIR/$output | cut -f1))" +} + +cmd_quantize() { + local input="" quant="Q4_K_M" output="" + while [[ $# -gt 0 ]]; do + case $1 in + --input) input="$2"; shift ;; + --quant) quant="$2"; shift ;; + --output) output="$2"; shift ;; + esac; shift + done + [ -z "$input" ] && err "Missing --input" + [ -z "$output" ] && output="${input%.gguf}_${quant}.gguf" + check_llama_cpp + log "Quantizing $input → $output (${quant})" + "$LLAMA_CPP_DIR/build/bin/llama-quantize" "$input" "$output" "$quant" + ok "Quantized: $output ($(du -sh $output | cut -f1))" +} + +cmd_package() { + local model="" name="" version="1.0" + while [[ $# -gt 0 ]]; do + case $1 in + --model) model="$2"; shift ;; + --name) name="$2"; shift ;; + --version) version="$2"; shift ;; + esac; shift + done + [ -z "$model" ] && err "Missing --model" + [ -z "$name" ] && name="$(basename $model .gguf)" + local pkg_dir="$OUTPUT_DIR/pkg-$name-$version" + mkdir -p "$pkg_dir" + cp "$model" "$pkg_dir/" + local size=$(wc -c < "$model") + local sha=$(sha256sum "$model" | cut -c1-32) + cat > "$pkg_dir/manifest.json" << MANIFEST +{ + "name": "$name", + "version": "$version", + "model_file": "$(basename $model)", + "size_bytes": $size, + "sha256": "$sha", + "format": "gguf", + "ix_compatible": true, + "created_at": "$(date -u +%Y-%m-%dT%H:%M:%SZ)" +} +MANIFEST + tar -czf "$OUTPUT_DIR/$name-$version.ix-package" -C "$OUTPUT_DIR" "pkg-$name-$version" + rm -rf "$pkg_dir" + ok "Packaged: $OUTPUT_DIR/$name-$version.ix-package" +} + +cmd_benchmark() { + local model="" prompt="Hello, how are you?" runs=5 + while [[ $# -gt 0 ]]; do + case $1 in + --model) model="$2"; shift ;; + --prompt) prompt="$2"; shift ;; + --runs) runs=$2; shift ;; + esac; shift + done + [ -z "$model" ] && err "Missing --model" + log "Benchmarking $model ($runs runs)" + log "Prompt: $prompt" + local total=0 + for i in $(seq 1 $runs); do + local start=$(date +%s%N) + curl -s -X POST http://localhost:8080/v1/completions \ + -H "Content-Type: application/json" \ + -d "{\"prompt\":\"$prompt\",\"max_tokens\":50}" > /dev/null + local end=$(date +%s%N) + local ms=$(( (end - start) / 1000000 )) + log "Run $i: ${ms}ms" + total=$((total + ms)) + done + local avg=$((total / runs)) + ok "Average latency: ${avg}ms over $runs runs" +} + +case "${1:-help}" in + convert) shift; cmd_convert "$@" ;; + quantize) shift; cmd_quantize "$@" ;; + package) shift; cmd_package "$@" ;; + benchmark) shift; cmd_benchmark "$@" ;; + *) usage ;; +esac diff --git a/tools/organ.py b/tools/organ.py new file mode 100644 index 0000000..43ed93d --- /dev/null +++ b/tools/organ.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python3 +""" +IX Organ Tool — Inference-X Community Toolchain +Package, publish, and install IX "organs" (AI personas) + +Usage: + ./organ.py pack --model model.gguf --prompt system.txt --name "ARIA" -o aria.organ + ./organ.py install aria.organ + ./organ.py list https://git.inference-x.com/organs + ./organ.py publish aria.organ --token YOUR_GITEA_TOKEN +""" + +import os, sys, json, hashlib, zipfile, argparse, urllib.request, shutil +from pathlib import Path + +ORGAN_STORE_URL = "https://git.inference-x.com/api/v1/repos/elmadani/ix-organs" +IX_HOME = Path.home() / ".inference-x" +ORGANS_DIR = IX_HOME / "organs" + +def pack(args): + """Package a model + prompt + config into an .organ file""" + organ_meta = { + "version": "1.0", + "name": args.name, + "description": args.description or "", + "model_file": Path(args.model).name, + "quant": args.quant or "Q4_K_M", + "context_size": args.ctx or 4096, + "temperature": args.temp or 0.7, + "max_tokens": args.max_tokens or 512, + "tags": (args.tags or "").split(","), + "author": args.author or "anonymous", + "license": args.license or "MIT", + "created_at": __import__("datetime").datetime.utcnow().isoformat(), + } + + output = args.output or f"{args.name.lower().replace(' ','-')}.organ" + + with zipfile.ZipFile(output, 'w', zipfile.ZIP_DEFLATED) as zf: + # Meta + zf.writestr("organ.json", json.dumps(organ_meta, indent=2)) + # Model + if args.model and Path(args.model).exists(): + zf.write(args.model, f"model/{Path(args.model).name}") + # System prompt + if args.prompt and Path(args.prompt).exists(): + with open(args.prompt) as f: + zf.writestr("system_prompt.txt", f.read()) + elif args.prompt_text: + zf.writestr("system_prompt.txt", args.prompt_text) + + size = Path(output).stat().st_size + h = hashlib.sha256(Path(output).read_bytes()).hexdigest()[:16] + print(f"✓ Organ packed: {output}") + print(f" Size: {size:,} bytes | SHA256: {h}...") + return output + +def install(args): + """Install an organ from a file or URL""" + src = args.source + ORGANS_DIR.mkdir(parents=True, exist_ok=True) + + if src.startswith("http"): + print(f"Downloading {src}...") + fname, _ = urllib.request.urlretrieve(src) + else: + fname = src + + with zipfile.ZipFile(fname, 'r') as zf: + meta_raw = zf.read("organ.json") + meta = json.loads(meta_raw) + name = meta["name"].lower().replace(" ", "-") + dest = ORGANS_DIR / name + dest.mkdir(exist_ok=True) + zf.extractall(dest) + + print(f"✓ Organ installed: {dest}") + print(f" Name: {meta['name']}") + print(f" Model: {meta.get('model_file','?')}") + print(f" Run with: ix --organ {name}") + +def list_organs(args): + """List available organs from the store""" + url = f"{ORGAN_STORE_URL}/contents/organs" + try: + with urllib.request.urlopen(url) as r: + data = json.load(r) + print("Available organs:") + for item in data: + print(f" {item['name']} — {item['download_url']}") + except Exception as e: + print(f"Store unavailable: {e}") + # List local + if ORGANS_DIR.exists(): + for d in ORGANS_DIR.iterdir(): + meta_file = d / "organ.json" + if meta_file.exists(): + meta = json.loads(meta_file.read_text()) + print(f" LOCAL: {meta['name']} ({d.name})") + +def main(): + p = argparse.ArgumentParser(description="IX Organ Tool") + sub = p.add_subparsers(dest="cmd") + + # pack + pk = sub.add_parser("pack", help="Pack a model into an organ") + pk.add_argument("--model", required=True, help="Path to .gguf model") + pk.add_argument("--prompt", help="Path to system prompt file") + pk.add_argument("--prompt-text", help="System prompt as text") + pk.add_argument("--name", required=True, help="Organ name") + pk.add_argument("--description", help="Description") + pk.add_argument("--quant", default="Q4_K_M") + pk.add_argument("--ctx", type=int, default=4096) + pk.add_argument("--temp", type=float, default=0.7) + pk.add_argument("--max-tokens", type=int, default=512) + pk.add_argument("--tags", help="Comma-separated tags") + pk.add_argument("--author") + pk.add_argument("--license", default="MIT") + pk.add_argument("-o", "--output", help="Output .organ file") + + # install + ins = sub.add_parser("install", help="Install an organ") + ins.add_argument("source", help="Path or URL to .organ file") + + # list + ls = sub.add_parser("list", help="List organs") + + args = p.parse_args() + if args.cmd == "pack": pack(args) + elif args.cmd == "install": install(args) + elif args.cmd == "list": list_organs(args) + else: p.print_help() + +if __name__ == "__main__": + main() diff --git a/tools/store.sh b/tools/store.sh new file mode 100644 index 0000000..cd56c93 --- /dev/null +++ b/tools/store.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# IX Store Client — Browse, install, publish models +# Usage: ./store.sh [browse|install|publish|rate] + +STORE_API="https://build.inference-x.com/api/store" +IX_HOME="$HOME/.inference-x" + +case "${1:-browse}" in + browse) + echo "=== IX Community Model Store ===" + curl -s "$STORE_API" | python3 -c " +import sys,json +d = json.load(sys.stdin) +for item in d.get('items',d if isinstance(d,list) else []): + print(f" {item.get('name','?')} | {item.get('size_mb','?')}MB | ⭐ {item.get('rating','?')} | {item.get('downloads','?')} downloads") +" 2>/dev/null || echo "Store offline - check git.inference-x.com/elmadani/ix-tools" + ;; + install) + [ -z "$2" ] && echo "Usage: store.sh install " && exit 1 + echo "Installing $2..." + mkdir -p "$IX_HOME/models" + curl -sL "$STORE_API/$2/download" -o "$IX_HOME/models/$2.gguf" + echo "✓ Installed to $IX_HOME/models/$2.gguf" + ;; + publish) + [ -z "$2" ] && echo "Usage: store.sh publish --token TOKEN" && exit 1 + TOKEN="$4" + [ -z "$TOKEN" ] && read -rp "Gitea token: " TOKEN + echo "Publishing $2..." + curl -s -X POST -H "Authorization: token $TOKEN" \ + -F "file=@$2" "$STORE_API/publish" + ;; + *) + echo "Usage: store.sh [browse|install |publish --token TOKEN]" + ;; +esac