NolandAI 🐙🚢

Hugging Face
License: MIT

NolandAI is an AI-powered Solana trading agent that combines on-chain analytics, social sentiment scraping, and a fine-tuned LLM to generate actionable trading calls. It ships as an npm SDK plus a FastAPI backend and a React/Next.js UI.


🔦 Highlights

  • Real-time market feeds via Dexscreener.
  • Social scraping (AssetDash, X/Twitter monitoring such as @mobyagent, @whalewatch).
  • LLM forecasting using a LoRA-fine-tuned model (fingpt-forecaster_dow30_llama2-7b_lora on Hugging Face).
  • Automated trading calls (hourly), plus optional auto-posting to X/Twitter.
  • Modular SDK (nolandai npm package) for JS/TS integration.
  • Production CI with release workflow and npm publish.

📦 Installation

From npm (recommended)

npm install nolandai
ts
Copy code
import { NolandAI } from "nolandai";

const bot = new NolandAI({ apiKey: process.env.NOLAND_KEY });
const call = await bot.getTradingCall();
console.log(call);
From source (dev)
bash
Copy code
git clone https://github.com/your-username/NolandAI.git
cd NolandAI
npm install           # frontend/sdk
pip install -r requirements.txt  # if running python FastAPI backend
🧩 Repository layout (recommended)
pgsql
Copy code
NolandAI/
├─ package.json
├─ index.js
├─ index.d.ts
├─ README.md
├─ LICENSE
├─ CHANGELOG.md
├─ CONTRIBUTING.md
├─ .github/
│  └─ workflows/ci.yml
├─ backend/
│  ├─ requirements.txt
│  └─ main.py                # FastAPI app (endpoints: /trading-call, /market-data/:token)
├─ frontend/
│  └─ (Next.js app)
└─ examples/
   └─ demo.js
⚙️ Quickstart — Local dev (SDK + demo backend)
Start FastAPI backend (example):

bash
Copy code
# in backend/
uvicorn main:app --reload --port 8000
Test SDK locally:

bash
Copy code
# from repo root or examples/
node examples/demo.js
📚 API (SDK)
new NolandAI(config?: { apiKey?: string; baseUrl?: string })

getTradingCall() → { token, action, confidence, reason }

getMarketData(tokenAddress: string) → market JSON from backend

🧪 Example examples/demo.js
(see examples/demo.js file in repo — quick show of getTradingCall + getMarketData)

📦 Publish & Releases
We publish releases using semantic version tags (vMAJOR.MINOR.PATCH) and CI that validates tests and publishes to npm on tag push. See .github/workflows/ci.yml.

Official release example:

v1.0.0 — Captain’s Log (2025-09-20)

Initial public release.

npm package nolandai published.

FastAPI endpoints /trading-call, /market-data/:token live.

Hugging Face model integration.

🏛️ Contributing
See CONTRIBUTING.md. Pull requests welcome — use branches, add tests, sign commits.

⚖️ License
MIT © 2025 AuroraRift

Maintainers
AuroraRift Team — team@aurorarift.io

Changelog
See CHANGELOG.md for full release history.

pgsql
Copy code

---

# 2) Files to create (copy these into repo root exactly)

Below are the key files. Put them where indicated.

## `package.json` (repo root)
```json
{
  "name": "nolandai",
  "version": "1.0.0",
  "description": "NolandAI - An AI-powered Solana trading agent for market intelligence, social scraping, and automated trading calls.",
  "main": "index.js",
  "types": "index.d.ts",
  "type": "module",
  "scripts": {
    "build": "tsc",
    "test": "node test.js || echo \"no tests\"",
    "lint": "eslint ."
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/your-username/NolandAI.git"
  },
  "keywords": [
    "AI",
    "trading",
    "Solana",
    "crypto",
    "blockchain",
    "LLM",
    "bot",
    "Dexscreener",
    "NolandAI",
    "AuroraRift"
  ],
  "author": "AuroraRift Team <team@aurorarift.io>",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/your-username/NolandAI/issues"
  },
  "homepage": "https://huggingface.co/your-username/NolandAI",
  "engines": {
    "node": ">=18"
  },
  "dependencies": {
    "axios": "^1.7.0",
    "dotenv": "^16.3.1"
  },
  "devDependencies": {
    "eslint": "^8.56.0",
    "typescript": "^5.4.0"
  }
}
index.js (repo root)
js
Copy code
import axios from "axios";
import dotenv from "dotenv";

dotenv.config();

export class NolandAI {
  constructor(config = {}) {
    this.apiKey = config.apiKey || process.env.NOLAND_KEY || "";
    this.baseUrl = config.baseUrl || "http://localhost:8000"; // FastAPI default
  }

  async getTradingCall() {
    const res = await axios.get(`${this.baseUrl}/trading-call`, {
      headers: this.apiKey ? { Authorization: `Bearer ${this.apiKey}` } : {}
    });
    return res.data;
  }

  async getMarketData(tokenAddress) {
    const res = await axios.get(`${this.baseUrl}/market-data/${tokenAddress}`);
    return res.data;
  }
}

export default NolandAI;
Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading