I successfully pushed one version of a PsychoPy experiment to Pavlovia yesterday (2/27/15). Every time I do so, I automatically do the following (which is frustrating but has seemed to work without fail for the past couple of months):
Error 500 upon initial sync:
In terminal, type cd and drag the hidden .git folder, press enter
Previously, these steps successfully synced my local projects with GitLab/Pavlovia. Now, however, it hangs on the final step before terminating the command:
Enumerating objects: 227, done.
Counting objects: 100% (227/227), done.
Delta compression using up to 10 threads
Compressing objects: 100% (225/225), done.
Writing objects: 100% (227/227), 153.10 MiB | 38.80 MiB/s, done.
Total 227 (delta 63), reused 0 (delta 0), pack-reused 0
error: RPC failed; curl 92 Recv failure: Connection reset by peer
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly
Everything up-to-date
I’ve been using SSH to authenticate with Pavlovia’s GitLab without issues, but suddenly, Git started asking for a password instead of using my SSH key.
What I’ve Tried So Far:
Verified my SSH key is added to GitLab:
My key appears in GitLab → User Settings → SSH Keys.
The public key (id_ed25519.pub) on my local machine matches the one in GitLab.
Confirmed my SSH key is loaded:
ssh-add -l
The key appears in the SSH agent.
Re-added it using ssh-add ~/.ssh/id_ed25519.
Tested SSH connection with verbose output:
ssh -vvvT git@gitlab.pavlovia.org
The SSH key is being offered, but GitLab rejects it and falls back to asking for a password.
Checked my Git remote URL:
git remote -v
It’s set to SSH (git@gitlab.pavlovia.org:username/repo.git), not HTTPS.
Ensured the correct SSH key is used:
Edited ~/.ssh/config to explicitly use my key:
Host gitlab.pavlovia.org
User git
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
Restarted SSH agent and reloaded the key:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Checked GitLab permissions:
My GitLab account has “Maintainer” access to the repository.
Tried creating a fresh SSH key and re-adding it to GitLab:
ssh-keygen -t ed25519 -C "myemail@example.com"
Deleted the old key from GitLab and added the new one.
Still being prompted for a password.
Request for Help:
Despite offering my SSH key, Pavlovia rejects it and asks for a password. What else can I check or try to fix this issue?
Any suggestions would be greatly appreciated – on a major time-crunch. Thanks!
What version of PsychoPy are you using?
I was originally using version 2023.2.3. I then read on this discourse that there had been some updates (like automatically increasing the buffer size during Pavlovia sync) that might fix my problem. Unfortunately, PsycoPy now freezes entirely with version 2024.2.5. I even redownloaded the version and deleted all of my .config files just to make sure. So I am now back to version 2023.2.3…
What is your operating system?
Sequoia 15.2
Are you using a VPN?
Not to my knowledge - I use a VPN to access my institution’s server where my neuroimaging data is stored, but I’m always disconnected to that (and have quit Cisco AnyConnect) before syncing my .psyexp files.
Are you using a virtual environment?
Same as above – not to my knowledge and if I do, I am doing it on a remote desktop on a different OS when working with neuroimaging data.
I’ve just asked ChatGPT why some users need to deal with SSH and I dont’. This was the reply. BTW, personally I’m using 2024.2.4 but as a Mac user having issues with the latest version I’d recommend trying 2024.1.4 (though it won’t fix the buffer size issue).
ChatGPT reply
The need to deal with SSH in PsychoPy/Pavlovia usually depends on how users interact with GitLab, which Pavlovia uses for version control and experiment hosting. Here’s why some users deal with SSH while others don’t:
1. Authentication Method
HTTPS Users (No SSH Required):
Most users simply log in to Pavlovia via their browser or PsychoPy and sync their experiments using their username and password (or a personal access token if GitLab enforces it).
This method doesn’t require setting up SSH keys.
SSH Users:
Some users prefer or are required to use SSH authentication, especially if they interact with GitLab via the command line or an external Git client.
2. Command Line / Manual Git Users
If you use PsychoPy’s built-in sync button, SSH is typically not needed because it handles authentication for you.
If you manually manage your experiment with Git commands (e.g., git push origin), GitLab may require SSH authentication unless you use an HTTPS URL.
3. Institutional/Network Restrictions
Some universities or workplaces block HTTPS authentication for security reasons, forcing users to set up SSH keys instead.
4. GitLab Settings & User Preferences
Some GitLab accounts may be configured to require SSH for security reasons.
Advanced users often prefer SSH because it eliminates the need to repeatedly enter passwords.
When Do You Need to Set Up SSH?
You only need SSH if:
You manually clone or push repositories via Git.
You run into authentication issues with HTTPS and want a permanent login solution.
Your institution requires it.
If you’re just syncing experiments via PsychoPy’s GUI, you typically don’t need to worry about SSH.
Below my personal notes on how to upload and exp to Pavlovia and make updates. Note, I am working on Linux.
Manual Upload to Gitlab/Pavlovia
• When you create an exp locally make sure you compile to JS. This will create the necessary files such as the exp.js, index file, browser-legacy files e.t.c.
• Visit https://gitlab.pavlovia.org/ and create an empty repository
• Choose the option Create blank project. In this example I called it tutorial
• Give it a name and press Create project at the bottom
• Click on the Clone button and copy the https link, in this case, https://gitlab.pavlovia.org/Yiannis_A/tutorial.git
• In your terminal create a folder, say /Documents/TutorialFolder, cd into it and type ~git clone https://gitlab.pavlovia.org/Yiannis_A/tutorial.git. Type your credentials when asked to do so. For the next steps do so every time you are asked.
• This will create a sub dir, in my case it is called tutorial. cd into it.
• Copy all the files found in your exp folder in this folder
• Type git add *
• Type git commit -m "First commit" or any other comment you want
• Type git push -u origin master
• If you now visit https://gitlab.pavlovia.org/Yiannis_A/tutorial.git you will find that the repository is now populated with your files. And if you visit Pavlovia you will find a project with the same name, in my case it is called tutorial.
Updating the exp and syncing with gitlab
• IMPORTANT: Before you make any changes and push them, make sure you first download any data from the remote. Run git pull origin master
• If you make a change to your exp make sure you compile the js again.
â—¦ Then run git add files_that_have_been_changed
â—¦ Followed by git commit -m "Comment"
â—¦ Followed by git push -u origin master
• If you want to add files
â—¦ Add them to the folder and then type git add filename
â—¦ Followed by git commit -m "Comment"
â—¦ Followed by git push -u orgin master
• If you run the exp and want to pull the data run git pull origin master to download the data
• If you want to remove the datafolder:
â—¦ Delete the folder locally. Better run sudo gio trash data/* rather than sudo rm -rf data so it is moved to trash and not get deleted permantly
â—¦ Then you have to tell git that this was removed. To do so run git rm data/*
â—¦ Then run git commit -m "Comment"
â—¦ Finally run git push -u origin master