Metadata-Version: 2.4
Name: scitex-cloud
Version: 0.11.6a0
Summary: SciTeX Cloud - Deployment and management CLI for SciTeX
Author-email: SciTeX Team <contact@scitex.ai>
License-Expression: AGPL-3.0-only
Project-URL: Homepage, https://scitex.ai
Project-URL: Repository, https://github.com/ywatanabe1989/scitex-cloud
Project-URL: Documentation, https://scitex-cloud.readthedocs.io
Project-URL: Issues, https://github.com/ywatanabe1989/scitex-cloud/issues
Project-URL: Changelog, https://github.com/ywatanabe1989/scitex-cloud/blob/main/CHANGELOG.md
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click>=8.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: black>=23.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Provides-Extra: django
Requires-Dist: Django>=5.2; extra == "django"
Requires-Dist: djangorestframework>=3.16; extra == "django"
Requires-Dist: django-cors-headers>=4.9; extra == "django"
Requires-Dist: django-extensions>=4.1; extra == "django"
Requires-Dist: django-browser-reload>=1.12; extra == "django"
Requires-Dist: djangorestframework-simplejwt>=5.3; extra == "django"
Requires-Dist: psycopg2-binary>=2.9; extra == "django"
Requires-Dist: gunicorn>=21.2; extra == "django"
Requires-Dist: daphne>=4.1; extra == "django"
Requires-Dist: fastapi>=0.109; extra == "django"
Requires-Dist: uvicorn[standard]>=0.27; extra == "django"
Requires-Dist: python-multipart>=0.0.6; extra == "django"
Requires-Dist: django-axes>=6.3; extra == "django"
Requires-Dist: python-decouple>=3.8; extra == "django"
Requires-Dist: PyJWT>=2.8; extra == "django"
Requires-Dist: cryptography>=42.0; extra == "django"
Requires-Dist: django-allauth[socialaccount]>=65.3; extra == "django"
Requires-Dist: requests>=2.31; extra == "django"
Requires-Dist: feedparser>=6.0; extra == "django"
Requires-Dist: playwright>=1.48; extra == "django"
Requires-Dist: docker>=7.1; extra == "django"
Requires-Dist: paramiko>=3.4; extra == "django"
Requires-Dist: psutil>=5.9; extra == "django"
Requires-Dist: python-dotenv>=1.0; extra == "django"
Requires-Dist: whitenoise>=6.11; extra == "django"
Requires-Dist: channels>=4.3; extra == "django"
Requires-Dist: channels-redis>=4.3; extra == "django"
Requires-Dist: celery[redis]>=5.4; extra == "django"
Requires-Dist: django-celery-results>=2.5; extra == "django"
Requires-Dist: django-celery-beat>=2.8; extra == "django"
Requires-Dist: flower>=2.0; extra == "django"
Requires-Dist: django-widget-tweaks>=1.5; extra == "django"
Requires-Dist: pygments; extra == "django"
Requires-Dist: litellm>=1.0; extra == "django"
Requires-Dist: impact-factor>=1.1; extra == "django"
Requires-Dist: nbformat>=5.9; extra == "django"
Requires-Dist: nbconvert>=7.0; extra == "django"
Requires-Dist: weasyprint>=60.0; extra == "django"
Requires-Dist: pydantic<2.12; extra == "django"
Provides-Extra: test
Requires-Dist: pytest>=8.4; extra == "test"
Requires-Dist: pytest-playwright>=0.7; extra == "test"
Requires-Dist: pytest-base-url>=2.1; extra == "test"
Requires-Dist: pytest-asyncio>=1.2; extra == "test"
Provides-Extra: gui
Requires-Dist: dearpygui>=1.11; extra == "gui"
Requires-Dist: cairosvg>=2.7; extra == "gui"
Requires-Dist: Pillow>=10.0; extra == "gui"
Provides-Extra: mcp
Requires-Dist: fastmcp>=0.4; extra == "mcp"
Requires-Dist: requests>=2.31; extra == "mcp"
Requires-Dist: pyyaml>=6.0; extra == "mcp"
Provides-Extra: all
Requires-Dist: scitex-cloud[dev,django,gui,mcp,test]; extra == "all"
Dynamic: license-file

<!-- ---
!-- Timestamp: 2026-02-13
!-- File: /home/ywatanabe/proj/scitex-cloud/README.md
!-- --- -->

<p align="center">
  <a href="https://scitex.ai">
    <img src="static/shared/images/scitex_logos/logo-files/png/scitex-logo-blue-cropped.png" alt="SciTeX Cloud" width="400">
  </a>
</p>

<p align="center">
  <a href="https://pypi.org/project/scitex-cloud/"><img src="https://badge.fury.io/py/scitex-cloud.svg" alt="PyPI version"></a>
  <a href="https://pypi.org/project/scitex-cloud/"><img src="https://img.shields.io/pypi/pyversions/scitex-cloud.svg" alt="Python Versions"></a>
  <a href="https://github.com/ywatanabe1989/scitex-cloud/blob/main/LICENSE"><img src="https://img.shields.io/github/license/ywatanabe1989/scitex-cloud" alt="License"></a>
</p>

<p align="center">
  <a href="https://scitex.ai">scitex.ai</a> · <code>pip install scitex-cloud</code>
</p>

---

**Open-source scientific research platform — web interface for the [scitex](https://github.com/ywatanabe1989/scitex-python) ecosystem.**

Provides Scholar, Writer, Vis, Console, and Hub modules as a Django web application with Docker deployment, plus a pip-installable CLI and MCP server for AI integration.

> **Status**: Alpha (data may be lost)

## Four Freedoms for Research

0. The freedom to **run** your research anywhere — your machine, your terms.
1. The freedom to **study** how every step works — from raw data to final manuscript.
2. The freedom to **redistribute** your workflows, not just your papers.
3. The freedom to **modify** any module and share improvements with the community.

AGPL-3.0 — because research infrastructure deserves the same freedoms as the software it runs on.

## Installation

```bash
pip install scitex-cloud              # CLI only
pip install scitex-cloud[mcp]         # CLI + MCP server
pip install scitex-cloud[all]         # Everything
```

## Three Interfaces

<details>
<summary><strong>Python API</strong></summary>

<br>

```python
import scitex_cloud

# Version and health
scitex_cloud.__version__        # "0.8.0-alpha"
scitex_cloud.get_version()      # Version string
scitex_cloud.health_check()     # Service health status
```

</details>

<details>
<summary><strong>CLI Commands</strong></summary>

<br>

```bash
scitex-cloud --help                    # Help
scitex-cloud --help-recursive          # All commands recursively
scitex-cloud --version                 # Version

# Git hosting (Gitea)
scitex-cloud gitea list                # List repositories
scitex-cloud gitea clone user/repo     # Clone repository
scitex-cloud gitea push                # Push changes
scitex-cloud gitea pr create           # Create pull request
scitex-cloud gitea issue create        # Create issue

# Docker management
scitex-cloud docker status             # Container status
scitex-cloud docker logs               # View logs

# MCP server
scitex-cloud mcp start                 # Start MCP server
scitex-cloud mcp list-tools            # List available tools
scitex-cloud mcp doctor                # Diagnose setup
scitex-cloud mcp installation          # Client config instructions

# Utilities
scitex-cloud status                    # Deployment status
scitex-cloud completion                # Shell completion setup
scitex-cloud list-python-apis          # List all Python APIs
```

</details>

<details>
<summary><strong>MCP Tools — 23 tools for AI Agents</strong></summary>

<br>

| Category | Tools | Description |
|----------|-------|-------------|
| cloud | 14 | Git operations (clone, push, pull, PR, issues) |
| api | 9 | Scholar search, CrossRef, BibTeX enrichment |

**Claude Desktop** (`~/.config/claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "scitex-cloud": {
      "command": "scitex-cloud",
      "args": ["mcp", "start"]
    }
  }
}
```

</details>

## Web Platform

<details>
<summary><strong>Quick Start (Docker)</strong></summary>

<br>

```bash
git clone https://github.com/ywatanabe1989/scitex-cloud.git
cd scitex-cloud
make start                    # Development environment

# Access at: http://localhost:8000
# Gitea: http://localhost:3000
# Test user: test-user / Password123!
```

</details>

<details>
<summary><strong>Deployment</strong></summary>

<br>

```bash
make start                    # Development (default)
make ENV=prod start           # Production
make ENV=prod status          # Health check
make ENV=prod db-backup       # Backup database
make help                     # All available commands
```

</details>

<details>
<summary><strong>Configuration</strong></summary>

<br>

`.env` files in `deployment/docker/envs/` (gitignored):

```bash
.env.dev        # Development
.env.prod       # Production
.env.staging    # Staging
.env.example    # Template (tracked)
```

Key variables:
```bash
SCITEX_CLOUD_DJANGO_SECRET_KEY=your-secret-key
SCITEX_CLOUD_POSTGRES_PASSWORD=strong-password
SCITEX_CLOUD_GITEA_TOKEN=your-token
```

</details>

<details>
<summary><strong>Project Structure</strong></summary>

<br>

```
scitex-cloud/
├── apps/                    # Django applications
│   ├── scholar_app/        # Literature discovery
│   ├── writer_app/         # Scientific writing
│   ├── console_app/        # Terminal & code execution
│   ├── vis_app/            # Data visualization
│   ├── hub_app/            # Project hub & file browser
│   ├── project_app/        # Project management
│   ├── clew_app/           # Verification pipeline
│   └── public_app/         # Landing page & tools
│
├── deployment/docker/
│   ├── docker_dev/         # Development compose
│   ├── docker_prod/        # Production compose
│   └── envs/               # .env files (gitignored)
│
├── config/                  # Django settings
├── static/                  # Shared frontend assets
├── src/scitex_cloud/        # pip package (CLI + MCP)
├── tests/                   # Test suite
└── Makefile                 # Thin dispatcher
```

</details>

## Contributing

We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md).

---

<p align="center">
  <a href="https://scitex.ai" target="_blank"><img src="static/shared/images/scitex_logos/scitex-icons/scitex-icon-navy-inverted.png" alt="SciTeX" width="40"/></a>
  <br>
  AGPL-3.0
</p>

<!-- EOF -->
