Skip to main content

ain-research

Autonomous Intelligence Network — Research & Knowledge Compilation Engine

PyPI Python License


ain-research is the core orchestration engine powering the Autonomous Intelligence Network (AIN) — a self-organizing research system that autonomously ingests scientific literature, detects contradictions between knowledge nodes, and evolves credibility scores for every research concept it tracks.

Built on top of LLMs, it guides, automates, and orchestrates open-ended domain research across 115+ arXiv categories spanning Physics, Mathematics, Computer Science, Statistics, Quantitative Biology, Quantitative Finance, Economics, and Electrical Engineering.


Features

Feature Description
Infinite Research Daemon Time-boxed, autonomous daemon that fetches domain-specific research with intelligent rate-limiting
115+ arXiv Topics Pre-configured categories across 9 scientific domains with fuzzy search
Firebase Authentication Role-based access control with library field permissions
LLM Steering MCP server for dynamic research queue management
Atomic Concurrency OS-level FileLocks for zero data corruption during concurrent access
Vault Viewer Minimalist SPA for browsing your knowledge base
MCP Integration Direct integration with Claude, Cursor, and other MCP-compatible clients

Installation

uv tool install ain-research

This installs the ain, ain-research, and ain-mcp commands globally.

Alternative: pip

pip install ain-research

Note: Ensure your Python Scripts folder is in your system PATH to use the ain command.

Development Install

git clone https://github.com/That-Tech-Geek/ain-research.git
cd ain-research
pip install -e .

Quick Start

1. Configure Workspace

By default, ain-research uses ~/.ain/ as the workspace root. Override with:

export AIN_WORKSPACE=/path/to/custom/workspace

2. Setup Firebase Authentication (Optional)

ain auth setup --cred-file /path/to/firebase-adminsdk.json

3. Check User Access

ain auth check --email user@example.com

4. Set Crawl Schedule

ain schedule --start "09:00" --end "21:00"

5. List Available Topics

ain topics              # List all 115+ topics
ain topics --count      # Show domain breakdown
ain search "quantum"    # Fuzzy search topics

6. Start the Daemon

ain-research            # Start the ingestion daemon
ain-research --force    # Run outside active time window

7. Add to Queue

ain queue add --arxiv 2305.14314    # Queue specific paper
ain queue list                      # View pending items

8. Compile the Vault

ain compile

9. Launch the UI

ain ui --port 8000

CLI Reference

Core Commands

Command Description Example
ain compile Compile the Vault Index and Tags ain compile
ain queue add Add paper to ingestion queue ain queue add --arxiv 2305.14314
ain queue list List pending queue items ain queue list
ain intent Decompose research goal into topics ain intent "agentic frameworks"
ain schedule Set daily crawl schedule ain schedule --start "09:00" --end "21:00"
ain ui Launch Vault Viewer ain ui --port 8000
ain setup-agents Setup MCP config for Claude/Cursor ain setup-agents

Topic Management

Command Description Example
ain topics List all arXiv topics ain topics
ain topics --count Show topic count by domain ain topics --count
ain search Fuzzy search topics ain search "neural"
ain theme list List active themes ain theme list
ain theme add Add custom theme ain theme add --name "MyTheme" --query "cat:cs.AI" --tags "ai,ml"
ain theme remove Remove theme ain theme remove --name "MyTheme"

Authentication

Command Description Example
ain auth check Check user library access ain auth check --email user@example.com
ain auth setup Setup Firebase credentials ain auth setup --cred-file path/to/sdk.json

Notifications

Command Description Example
ain telegram setup Setup Telegram notifications ain telegram setup --token BOT_TOKEN

Python API

Authentication

from ain_research.auth import check_library_access, require_library_access, authenticate_user

# Check access
result = check_library_access("user@example.com")
if result["allowed"]:
    print("Access granted")

# Boolean check
if authenticate_user("user@example.com"):
    proceed()

# Decorator
@require_library_access
def my_function(email):
    # Only runs if user has library=True
    pass
from ain_research.config import fuzzy_search_topics, get_topic_list

# Fuzzy search
results = fuzzy_search_topics("quantum", threshold=0.3)
for name, score, data in results:
    print(f"{name}: {score:.0%} - {data['query']}")

# Get all topics
topics = get_topic_list()

Configuration

from ain_research.config import (
    get_arxiv_categories,
    save_arxiv_categories,
    get_schedule,
    save_schedule
)

# Get all categories
categories = get_arxiv_categories()

# Add custom category
categories["MyTopic"] = {
    "query": "cat:cs.AI",
    "tags": ["ai", "custom"]
}
save_arxiv_categories(categories)

# Update schedule
save_schedule("09:00", "21:00")

MCP Integration

Claude Desktop / Cursor

Add to your MCP configuration:

{
  "mcpServers": {
    "ain-research": {
      "command": "uv",
      "args": ["run", "ain-mcp"]
    }
  }
}

Available MCP Tools

Tool Description
queue_arxiv(arxiv_id) Queue a specific ArXiv paper
get_queue_status() Get current ingestion queue status
trigger_compile() Re-compile the Vault Index
add_arxiv_category(name, query, tags) Add new research trajectory

Workspace Structure

~/.ain/
├── arxiv_categories.json      # Topic configuration
├── schedule_config.json       # Crawl schedule
├── telegram_config.json       # Telegram notifications
├── firebase-adminsdk.json     # Firebase credentials
├── daemon_state.json          # Daemon state
├── data/                      # SQLite database
└── vault/
    └── wiki/
        ├── 01_Inbox/
        ├── 02_Physics/
        ├── 03_Mathematics/
        ├── 04_Computer_Science/
        ├── 05_Statistics/
        ├── 06_Quantitative_Biology/
        ├── 07_Quantitative_Finance/
        ├── 08_Economics/
        ├── 09_Electrical_Engineering/
        └── 10_Publications/

Supported Topics (115+)

Physics (17)

physics.gen-ph, physics.atom-ph, physics.chem-ph, physics.bio-ph, physics.comp-ph, physics.data-an, physics.flu-dyn, physics.geo-ph, physics.optics, physics.plasma-ph, physics.space-ph, physics.med-ph, physics.hist-ph, physics.ed-ph, physics.soc-ph, physics.ins-det, quant-ph

Mathematics (28)

math.AG, math.AT, math.CA, math.CO, math.CT, math.DG, math.DS, math.FA, math.GM, math.GN, math.GR, math.HO, math.IT, math.KT, math.LO, math.MG, math.MP, math.NA, math.NT, math.OA, math.OC, math.PR, math.QA, math.RA, math.RT, math.SG, math.SP, math.ST

Computer Science (40)

cs.AI, cs.AR, cs.CC, cs.CE, cs.CG, cs.CL, cs.CR, cs.CV, cs.CY, cs.DB, cs.DC, cs.DL, cs.DM, cs.DS, cs.ET, cs.FL, cs.GL, cs.GR, cs.GT, cs.HC, cs.IR, cs.IT, cs.LG, cs.LO, cs.MA, cs.MM, cs.MS, cs.NA, cs.NE, cs.NI, cs.OH, cs.OS, cs.PF, cs.PL, cs.RO, cs.SC, cs.SD, cs.SE, cs.SI, cs.SY

Statistics (6)

stat.AP, stat.CO, stat.ME, stat.ML, stat.OT, stat.TH

Quantitative Biology (9)

q-bio.BM, q-bio.CB, q-bio.GN, q-bio.MN, q-bio.NC, q-bio.OT, q-bio.PE, q-bio.QM, q-bio.TO

Quantitative Finance (9)

q-fin.CP, q-fin.EC, q-fin.GN, q-fin.MF, q-fin.PM, q-fin.PR, q-fin.RM, q-fin.ST, q-fin.TR

Economics (2)

econ.GN, econ.TH

Electrical Engineering (4)

eess.AS, eess.IV, eess.SP, eess.SY


Environment Variables

Variable Default Description
AIN_WORKSPACE ~/.ain/ Workspace root directory
FIREBASE_CRED_PATH ~/.ain/firebase-adminsdk.json Firebase credentials path
CRAWL_START_TIME 09:00 Daemon start time
CRAWL_END_TIME 21:00 Daemon end time

License

MIT License - see LICENSE


Author

That-Tech-Geek / Sambit Mishra


Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Support

If you find this project useful, please consider giving it a star on GitHub.

Metadata

Release files for ain-research-engine 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ain-research-engine 0.4.0
File Size Uploaded Provenance Actions
ain_research_engine-0.4.0.tar.gz 205.1 kB Without provenance Details for ain_research_engine-0.4.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ain-research-engine 0.4.0
File Interpreter ABI Platform Actions
ain_research_engine-0.4.0-py3-none-any.whl Python 3 none any Details for ain_research_engine-0.4.0-py3-none-any.whl

Total release size: 257.3 kB

Release files / ain_research_engine-0.4.0.tar.gz

Download URL ain_research_engine-0.4.0.tar.gz
Size 205.1 kB
Tags Source
SHA-256 checksum
How to use checksums
b4d2ee9f217de891d25d1b640556afa46b82d1d34825d30a85d70e20ded84bec
BLAKE2b-256 checksum
How to use checksums
cfa9c16ad5cdf26dcebf190fc41d0122d8f5b92a7a82ada99037bd11da817f64
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.14

Release files / ain_research_engine-0.4.0-py3-none-any.whl

Download URL ain_research_engine-0.4.0-py3-none-any.whl
Size 52.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c8db921ab4d7687a4f3a18dbe946d5f7d5fcd1b482f162d7ec71e789fc9bb48b
BLAKE2b-256 checksum
How to use checksums
32f06985077563fae115da3c8e911af9de5e8829d76e69ccd710a888cc505de9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.14

Security for ain-research-engine 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page