Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Contributing to BrainDrive

Welcome, and thank you for your interest in contributing to BrainDrive!

**BrainDrive is an open-source personal AI system designed for ownership, freedom, empowerment, and sustainability.**
Our mission is to make it easy for anyone to build, control, and benefit from their own AI system—free from Big Tech’s restrictions.

We’re early in our development journey and still laying the foundation. Right now, we’re inviting early technical users to explore, provide feedback, and help shape what’s coming next.

---

## 🙋‍♂️ Who Should Contribute Right Now?

We're currently in a **developer beta** phase, which means we're:
- Actively updating the core system
- Making changes that may break early plugin or extension development
- Prioritizing **usability**, **feedback**, and **installation experience**

That said, if you’re technically inclined and share our vision, your help is welcome!

---

## 🔧 How You Can Help Now

1. **Test the Install Process**
- Follow the instructions in our [Setup Guide](https://github.com/BrainDriveAI/BrainDrive/blob/main/INSTALL.md)
- Try getting BrainDrive running locally
- Note any confusing steps or issues you encounter

2. **Give Feedback**
- What worked?
- What didn’t?
- What would you expect or improve?

You can share your findings directly in our [Community Forum](https://community.braindrive.ai/t/braindrive-developer-feedback/104), where we also post weekly dev updates.

3. **Help Others**
- If you get it working, share your tips and tricks in the feeback thread above.

---

## ⚠️ Development Warning

We’re actively improving core components—including the renderer and plugin system.
That means:
- Features may change rapidly
- Plugin development may be unstable
- Internal architecture may not be final

We're not quite ready for general-purpose contributions or plugin development just yet—but we're getting close.

If you'd like to be notified when the project is ready for wider contribution, keep an eye on the [Forum](https://forum.braindrive.ai) or watch this GitHub repo.

---

## 🤝 Long-Term Vision

BrainDrive LLC is currently stewarding the project. Our goal is to decentralize over time as the ecosystem matures. Eventually, we want BrainDrive to be built by its owners, builders, and entrepreneurs—not just us.

---

## ✨ Guiding Principles

We evaluate all contributions through the lens of our four core pillars:

- **Ownership** – You own your BrainDrive.
- **Freedom** – We never introduce lock-ins or coercive restrictions
- **Empowerment** – All documentation should make BrainDrive easier for others to use
- **Sustainability** – We prioritize value-creating contributions that help the ecosystem thrive

---

## 📬 Questions?

Reach out in our [Forum](https://forum.braindrive.ai) or open a GitHub Issue if you’re unsure where to start.

Thanks for being here. We’re building something big—and it starts with you.

**Your AI. Your Rules.**
67 changes: 43 additions & 24 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Before continuing, ensure the following are installed:
| **Node.js** | [Node.js](https://nodejs.org/en/download/) | `node -v` and `npm -v` |

> ⚠️ **Development Mode Note:**
> While running BrainDrive in development, you’ll need **two terminal windows or tabs open**:
> While running BrainDrive in development, you’ll need **two terminal windows**:
>
> * One for the **backend server**
> * One for the **frontend server**
Expand All @@ -26,20 +26,12 @@ Before continuing, ensure the following are installed:

You can either install the tools system-wide or use Conda to isolate them. Using Conda is recommended for consistency.

### ✅ Recommended: Create with Conda

```bash
conda create -n BrainDriveDev -c conda-forge python=3.11 nodejs git -y
conda activate BrainDriveDev
```

This sets up:

* Python 3.11
* Node.js and npm
* Git

> You will need to activate this environment in both terminal windows before running backend and frontend.
> You will need to activate this environment in **both terminal windows** when working on the project.

---

Expand Down Expand Up @@ -82,6 +74,7 @@ chmod +x build_plugins.sh
### 🔸 Option 2: 🛠 Manual Plugin Build

```bash
conda activate BrainDriveDev # if not already activated
cd plugins/BrainDriveBasicAIChat
npm install
npm run build
Expand Down Expand Up @@ -170,26 +163,25 @@ ENABLE_TEST_ROUTES=true

## 🚀 Step 5: Run the Backend Server

In the **backend terminal window**:
In the **first terminal window**:

```bash
cd BrainDrive/backend
uvicorn main:app --reload --host localhost --port 8005
```

---

## 💻 Step 6: Set Up the Frontend
## 💻 Step 6: Set Up and Run the Frontend

In a **second terminal window**:
In the **second terminal window**:

```bash
cd BrainDrive/frontend
conda activate BrainDriveDev # if not already activated
npm install
```

---

### ⚙️ Frontend Configuration

Create a `.env` file in the `frontend/` folder.
Expand Down Expand Up @@ -217,21 +209,16 @@ VITE_DEV_EMAIL=your-email@example.com
VITE_DEV_PASSWORD=your-password
```

> ⚠️ **Security Note:** Remove auto-login details before production deployment.

---
> ⚠️ **Security Note:** Remove auto-login credentials before production deployment.

## 🖥️ Step 7: Run the Frontend
Now start the frontend:

```bash
npm run dev
```

Or if using Yarn:

```bash
yarn dev
```
✅ Once both servers are running, you can access BrainDrive at:
[http://localhost:5173](http://localhost:5173)

---

Expand All @@ -245,3 +232,35 @@ yarn dev

---

## 🔁 Restarting BrainDrive Later

After shutting down or rebooting, restart BrainDrive with the following steps:

### 1️⃣ Open Two Terminal Windows

* One for the **backend**
* One for the **frontend**

### 2️⃣ Activate Conda in Both

```bash
conda activate BrainDriveDev
```

### 3️⃣ Start the Backend Server

```bash
cd BrainDrive/backend
uvicorn main:app --reload --host localhost --port 8005
```

### 4️⃣ Start the Frontend Server

```bash
cd BrainDrive/frontend
npm run dev
```

Then visit: [http://localhost:5173](http://localhost:5173)


2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ The backend is built with Python and provides:
- User settings and preferences
- Database management

[Learn more about the backend](backend/README.md)

### Plugin System

The plugin system allows developers to extend the platform with:
Expand Down
7 changes: 7 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,13 @@ Our roadmap is broken into clearly defined versions, each building toward a stab

---

## 📢 Community Updates

We post weekly development updates and community discussions in our forum.

👉 [Join the conversation and follow our dev updates](https://community.braindrive.ai/t/braindrive-development-progress-updates/92)


## How to Contribute

See [CONTRIBUTING.md](./CONTRIBUTING.md) for ways to get involved. You can also:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ interface ChatHeaderProps {
* Component to render the chat header with controls
*/
class ChatHeader extends React.Component<ChatHeaderProps> {
static defaultProps = {
useStreaming: true
};
render() {
const { useStreaming, toggleStreamingMode, isLoading } = this.props;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@ class AIPromptChat extends React.Component<AIPromptChatProps, {
selectedModel: null,
useStreaming: savedStreamingMode !== null
? savedStreamingMode
: !!props.defaultStreamingMode,
: props.defaultStreamingMode !== undefined
? !!props.defaultStreamingMode
: true,
conversation_id: null,
isLoadingHistory: false,
currentUserId: null, // Add state for current user ID
Expand Down