| --- |
| title: PSYCHE web |
| emoji: 🧠 |
| colorFrom: blue |
| colorTo: indigo |
| sdk: docker |
| pinned: false |
| --- |
| |
| # PSYCHE web (Hugging Face Space) |
|
|
| Barebones **Flask** app: **Home**, **Analysis** (DuckDB + preset queries over demo CSV), **Replay** (placeholder). |
|
|
| This Space uses **Flask + gunicorn**, not the FastAPI starter Hugging Face shows in the empty-Space wizard. That is intentional. |
|
|
| **Live Space:** [https://huggingface.co/spaces/ystrittm/psyche](https://huggingface.co/spaces/ystrittm/psyche) |
|
|
| ## Run locally |
|
|
| From this directory: |
|
|
| ```bash |
| python -m venv .venv |
| source .venv/bin/activate |
| pip install -r requirements.txt |
| export FLASK_APP=app.py |
| flask run --host 0.0.0.0 --port 7860 |
| ``` |
|
|
| Open `http://127.0.0.1:7860/`. |
|
|
| --- |
|
|
| ## Deploy without a second repo (work only in PSYCHE) |
|
|
| Hugging Face’s onboarding often shows: |
|
|
| ```bash |
| git clone https://huggingface.co/spaces/ystrittm/psyche |
| # password = HF access token (write) from https://huggingface.co/settings/tokens |
| ``` |
|
|
| That clones the **Space’s own Git repository** on Hugging Face (not GitHub). It is **valid**: you edit there, then `git push` with the same token. Many people work that way. |
|
|
| For PSYCHE we also support **not** maintaining that second clone: keep **one** checkout of [PSYCHE on GitHub](https://github.com/younesStrittmatter/PSYCHE), edit `space/` here, and deploy with the options below (they push the `space/` subtree to the same HF URL). |
|
|
| ### Hugging Face does not “connect” a GitHub repo in Space settings |
|
|
| There is **no** reliable toggle like “use this GitHub repo as the source” in the Space UI. **Rename or transfer** only changes **owner or name** (and the Space URL / git remote); it does **not** sync GitHub. |
|
|
| To deploy the `space/` folder from PSYCHE, use one of the options below. |
|
|
| ### Option A — Push from your machine (simplest) |
|
|
| From the **PSYCHE** repo root, **`space/` must be committed** (the push script uses `git subtree split`, which only sees tracked files): |
|
|
| ```bash |
| git add space |
| git commit -m "Add Hugging Face Space app" |
| ``` |
|
|
| Then: |
|
|
| ```bash |
| export HF_TOKEN=hf_... # write token: https://huggingface.co/settings/tokens |
| ./scripts/push_hf_space.sh |
| ``` |
|
|
| **Using a `.env` file:** copy [`.env.example`](../.env.example) to **`.env`** in the repo root (`.env` is gitignored), put `HF_TOKEN=hf_...` inside, then run `./scripts/push_hf_space.sh` — the script loads `.env` automatically. |
|
|
| If you already use **`source scripts/activate.sh`** with a secrets file ([`scripts/local.env.example`](../scripts/local.env.example)), putting `export HF_TOKEN=...` in that secrets file also works before running the script. |
|
|
| That uses `git subtree split` to push **only** the `space/` tree to `spaces/ystrittm/psyche` (no second working copy). If the Space still has the default FastAPI starter and push is rejected, run **once**: |
|
|
| ```bash |
| HF_SPACE_FORCE=1 ./scripts/push_hf_space.sh |
| ``` |
|
|
| Optional: `HF_USERNAME` (your HF username) if `oauth2` as user does not work with your token setup. |
|
|
| ### Option B — GitHub Actions (push to GitHub → Space updates) |
|
|
| This repo includes **[`.github/workflows/sync-psyche-space.yml`](../.github/workflows/sync-psyche-space.yml)**. Add a repository secret **`HF_TOKEN`** (same write token as above): GitHub → **Settings** → **Secrets and variables** → **Actions** → **New repository secret**. |
| |
| When you push to **`main`** and **`space/`** changes, the workflow runs `scripts/push_hf_space.sh` so you do not have to run it locally. |
| |
| ### Option C — Second clone (optional) |
| |
| You *can* clone `https://huggingface.co/spaces/ystrittm/psyche` elsewhere and copy from `space/`, but it duplicates work—prefer **A** or **B**. |
| |
| --- |
| |
| Optional: add `HF_TOKEN` in **Space → Settings → Secrets** when the app reads private Hub data (not used by the current demo). |
|
|
| ## GitHub → this URL |
|
|
| Set the PSYCHE GitHub repo **Website** to `https://huggingface.co/spaces/ystrittm/psyche` and link it from the root README / docs. |
|
|