diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml
index 189489614a..620b793fc7 100644
--- a/.github/workflows/docker-image.yml
+++ b/.github/workflows/docker-image.yml
@@ -8,7 +8,7 @@ on:
jobs:
build:
runs-on: ubuntu-latest
-
+
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
@@ -17,7 +17,7 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: actions/checkout@v3
-
+
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
@@ -38,4 +38,3 @@ jobs:
letta/letta:latest
memgpt/letta:${{ env.CURRENT_VERSION }}
memgpt/letta:latest
-
diff --git a/.github/workflows/letta-code-sync.yml b/.github/workflows/letta-code-sync.yml
new file mode 100644
index 0000000000..391047b44b
--- /dev/null
+++ b/.github/workflows/letta-code-sync.yml
@@ -0,0 +1,19 @@
+name: Sync Code
+
+on:
+ push:
+ branches:
+ - main
+
+jobs:
+ notify:
+ runs-on: ubuntu-latest
+ if: ${{ !contains(github.event.head_commit.message, '[sync-skip]') }}
+ steps:
+ - name: Trigger repository_dispatch
+ run: |
+ curl -X POST \
+ -H "Authorization: token ${{ secrets.SYNC_PAT }}" \
+ -H "Accept: application/vnd.github.v3+json" \
+ https://api.github.com/repos/letta-ai/letta-cloud/dispatches \
+ -d '{"event_type":"oss-update"}'
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0d8f16f7a2..c7b7d3a522 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -19,18 +19,46 @@ Now, let's bring your new playground to your local machine.
git clone https://github.com/your-username/letta.git
```
-### 🧩 Install Dependencies
+### 🧩 Install dependencies & configure environment
+
+#### Install poetry and dependencies
First, install Poetry using [the official instructions here](https://python-poetry.org/docs/#installation).
-Once Poetry is installed, navigate to the Letta directory and install the Letta project with Poetry:
+Once Poetry is installed, navigate to the letta directory and install the Letta project with Poetry:
```shell
-cd Letta
+cd letta
poetry shell
poetry install --all-extras
```
+#### Setup PostgreSQL environment (optional)
+
+If you are planning to develop letta connected to PostgreSQL database, you need to take the following actions.
+If you are not planning to use PostgreSQL database, you can skip to the step which talks about [running letta](#running-letta-with-poetry).
+
+Assuming you have a running PostgreSQL instance, first you need to create the user, database and ensure the pgvector
+extension is ready. Here are sample steps for a case where user and database name is letta and assumes no password is set:
+
+```shell
+createuser letta
+createdb letta --owner=letta
+psql -d letta -c 'CREATE EXTENSION IF NOT EXISTS vector'
+```
+Setup the environment variable to tell letta code to contact PostgreSQL database:
+```shell
+export LETTA_PG_URI="postgresql://${POSTGRES_USER:-letta}:${POSTGRES_PASSWORD:-letta}@localhost:5432/${POSTGRES_DB:-letta}"
+```
+
+After this you need to prep the database with initial content. You can use alembic upgrade to populate the initial
+contents from template test data. Please ensure to activate poetry environment using `poetry shell`.
+```shell
+alembic upgrade head
+```
+
+#### Running letta with poetry
Now when you want to use `letta`, make sure you first activate the `poetry` environment using poetry shell:
+
```shell
$ poetry shell
(pyletta-py3.12) $ letta run
diff --git a/README.md b/README.md
index 9ccb2a505e..a46cddc95d 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
Letta (previously MemGPT)
-**☄️ New release: Letta Agent Development Environment (_read more [here](#-access-the-letta-ade-agent-development-environment)_) ☄️**
+**☄️ New release: Letta Agent Development Environment (_read more [here](#-access-the-ade-agent-development-environment)_) ☄️**