What features would you want in an open source learning app?
Hey r/opensource,
I’ve been working on a project called Mnemo for 2 years now, a free and open source study app aimed at making learning tools accessible to everyone. The programming started two weeks ago (no downloads yet), but the website is up with details, UI showcase, and the philosophy behind it: https://shadowccs.github.io/mnemo-site/
The big ideas behind Mnemo are:
No expensive subnoscriptions for basic learning tools
Fully open source & customizable
Private by default, your data stays with you
Feature development guided by learners, not corporate priorities
I’d love your thoughts on:
Is this something you’d find useful?
What features would you want in a study tool like this?
Anything that feels missing from the concept?
Anything specific you find lacking from other tools?
This isn’t meant as a promo, more like a sanity check before I dive deep into coding.
I really want feedback from people who value open source principles.
Thanks for reading!
https://redd.it/1mm2roi
@r_opensource
Hey r/opensource,
I’ve been working on a project called Mnemo for 2 years now, a free and open source study app aimed at making learning tools accessible to everyone. The programming started two weeks ago (no downloads yet), but the website is up with details, UI showcase, and the philosophy behind it: https://shadowccs.github.io/mnemo-site/
The big ideas behind Mnemo are:
No expensive subnoscriptions for basic learning tools
Fully open source & customizable
Private by default, your data stays with you
Feature development guided by learners, not corporate priorities
I’d love your thoughts on:
Is this something you’d find useful?
What features would you want in a study tool like this?
Anything that feels missing from the concept?
Anything specific you find lacking from other tools?
This isn’t meant as a promo, more like a sanity check before I dive deep into coding.
I really want feedback from people who value open source principles.
Thanks for reading!
https://redd.it/1mm2roi
@r_opensource
shadowccs.github.io
Mnemo - Home
mnemo is a free, open-source, cross-platform study application featuring flashcards, notes, learning paths, mindmaps, and games. Learn and grow with our powerful all-in-one learning tool - no subnoscriptions, no tracking, no ads.
Sonatype moved from the Eclipse Public Licensed to being closed source and proprietary in a point release from 3.76 to 3.77 with no means to rollback
https://battlepenguin.com/tech/fixing-yum-indexing-on-sonatype-nexus-and-the-non-opensource-upgrade/
https://redd.it/1mm5oje
@r_opensource
https://battlepenguin.com/tech/fixing-yum-indexing-on-sonatype-nexus-and-the-non-opensource-upgrade/
https://redd.it/1mm5oje
@r_opensource
Battlepenguin
Fixing Yum Indexing on Sonatype Nexus and the Non-Open-Source Upgrade
I’ve been using Sonatype Nexus for the past few months as a repository for build artifacts (Python and RPM packages) for project I’ve been developing...
I'm new to open source. What open source license would you recommend?
I have a project I'm building and trying to figure out what is the best license to use for open source any recommendations or considerations?
https://redd.it/1mm7wp1
@r_opensource
I have a project I'm building and trying to figure out what is the best license to use for open source any recommendations or considerations?
https://redd.it/1mm7wp1
@r_opensource
Reddit
From the opensource community on Reddit
Explore this post and more from the opensource community
We just made Loadouts for Genshin Impact available as an RPM package in the official Fedora Linux repositories - v0.1.10 being the first release there!
# TLDR
Besides its availability as a [*repository package on PyPI*](https://pypi.org/project/gi-loadouts/?ref=gridhead.net) and as an [*archived binary on PyInstaller*](https://github.com/gridhead/gi-loadouts/releases/tag/0.1.10?ref=gridhead.net), Loadouts for Genshin Impact is now available as an [*installable package on Fedora Linux*](https://src.fedoraproject.org/rpms/gi-loadouts?ref=gridhead.net). Travelers using [*Fedora Linux 42 and above*](https://bodhi.fedoraproject.org/updates/?search=gi-loadouts&user=t0xic0der&ref=gridhead.net) can install the package on their operating system by executing the following command.
$ sudo dnf install gi-loadouts --assumeyes --setopt=install_weak_deps=False
# About
This is a desktop application that allows travelers to manage their custom equipment of artifacts and weapons for playable characters and makes it convenient for travelers to calculate the associated statistics based on their equipment using the semantic understanding of how the gameplay works. Travelers can create their bespoke loadouts consisting of characters, artifacts and weapons and share them with their fellow travelers. Supported file formats include a human-readable **Yet Another Markup Language (YAML)** serialization format and a JSON-based **Genshin Open Object Definition (GOOD)** serialization format.
This project is currently in its beta phase and we are committed to delivering a quality experience with every release we make. If you are excited about the direction of this project and want to contribute to the efforts, we would greatly appreciate it if you help us boost the project visibility by **starring the project repository**, address the releases by **reporting the experienced errors**, choose the direction by **proposing the intended features**, enhance the usability by **documenting the project repository**, improve the codebase by **opening the pull requests** and finally, persist our efforts by **sponsoring the development members**
Updates
[Loadouts for Genshin Impact v0.1.10](https://gridhead.net/loadouts-for-genshin-impact-v0-1-10-released/) is OUT NOW with the addition of support for recently released characters like **Ineffa** and for recently released weapons like **Fractured Halo** and **Flame-Forged Insight** from **Genshin Impact v5.8 Phase 1**. Take this FREE and OPEN SOURCE application for a spin using the links below to manage the custom equipment of artifacts and weapons for the playable characters.
# Resources
* [Loadouts for Genshin Impact - GitHub](https://github.com/gridhead/gi-loadouts?ref=gridhead.net)
* [Loadouts for Genshin Impact - PyPI](https://pypi.org/project/gi-loadouts?ref=gridhead.net)
* [Loadouts for Genshin Impact v0.1.10](https://github.com/gridhead/gi-loadouts/releases/tag/0.1.10?ref=gridhead.net)
* [Executable for GNU/Linux distributions](https://github.com/gridhead/gi-loadouts/releases/download/0.1.10/gi-loadouts-0.1.10?ref=gridhead.net)
* [Executable for Microsoft Windows](https://github.com/gridhead/gi-loadouts/releases/download/0.1.10/gi-loadouts-0.1.10.exe?ref=gridhead.net)
# Screenshots
* [Ineffa - Workspace](https://gridhead.net/content/images/2025/08/infa_dash.png)
* [Ineffa - Results](https://gridhead.net/content/images/2025/08/infa_rslt.png)
* [Fractured Halo - Workspace](https://gridhead.net/content/images/2025/08/ftho.png)
* [Flame-Forged Insight - Workspace](https://gridhead.net/content/images/2025/08/ffit.png)
# Appeal
While allowing you to experiment with various builds and share them for later, Loadouts for Genshin Impact lets you take calculated risks by showing you the potential of your characters with certain artifacts and weapons equipped that you might not even own. Loadouts for Genshin Impact has been and always be a free and open source software project and we are committed to delivering a quality experience with every release we make.
# Disclaimer
With an extensive
# TLDR
Besides its availability as a [*repository package on PyPI*](https://pypi.org/project/gi-loadouts/?ref=gridhead.net) and as an [*archived binary on PyInstaller*](https://github.com/gridhead/gi-loadouts/releases/tag/0.1.10?ref=gridhead.net), Loadouts for Genshin Impact is now available as an [*installable package on Fedora Linux*](https://src.fedoraproject.org/rpms/gi-loadouts?ref=gridhead.net). Travelers using [*Fedora Linux 42 and above*](https://bodhi.fedoraproject.org/updates/?search=gi-loadouts&user=t0xic0der&ref=gridhead.net) can install the package on their operating system by executing the following command.
$ sudo dnf install gi-loadouts --assumeyes --setopt=install_weak_deps=False
# About
This is a desktop application that allows travelers to manage their custom equipment of artifacts and weapons for playable characters and makes it convenient for travelers to calculate the associated statistics based on their equipment using the semantic understanding of how the gameplay works. Travelers can create their bespoke loadouts consisting of characters, artifacts and weapons and share them with their fellow travelers. Supported file formats include a human-readable **Yet Another Markup Language (YAML)** serialization format and a JSON-based **Genshin Open Object Definition (GOOD)** serialization format.
This project is currently in its beta phase and we are committed to delivering a quality experience with every release we make. If you are excited about the direction of this project and want to contribute to the efforts, we would greatly appreciate it if you help us boost the project visibility by **starring the project repository**, address the releases by **reporting the experienced errors**, choose the direction by **proposing the intended features**, enhance the usability by **documenting the project repository**, improve the codebase by **opening the pull requests** and finally, persist our efforts by **sponsoring the development members**
Updates
[Loadouts for Genshin Impact v0.1.10](https://gridhead.net/loadouts-for-genshin-impact-v0-1-10-released/) is OUT NOW with the addition of support for recently released characters like **Ineffa** and for recently released weapons like **Fractured Halo** and **Flame-Forged Insight** from **Genshin Impact v5.8 Phase 1**. Take this FREE and OPEN SOURCE application for a spin using the links below to manage the custom equipment of artifacts and weapons for the playable characters.
# Resources
* [Loadouts for Genshin Impact - GitHub](https://github.com/gridhead/gi-loadouts?ref=gridhead.net)
* [Loadouts for Genshin Impact - PyPI](https://pypi.org/project/gi-loadouts?ref=gridhead.net)
* [Loadouts for Genshin Impact v0.1.10](https://github.com/gridhead/gi-loadouts/releases/tag/0.1.10?ref=gridhead.net)
* [Executable for GNU/Linux distributions](https://github.com/gridhead/gi-loadouts/releases/download/0.1.10/gi-loadouts-0.1.10?ref=gridhead.net)
* [Executable for Microsoft Windows](https://github.com/gridhead/gi-loadouts/releases/download/0.1.10/gi-loadouts-0.1.10.exe?ref=gridhead.net)
# Screenshots
* [Ineffa - Workspace](https://gridhead.net/content/images/2025/08/infa_dash.png)
* [Ineffa - Results](https://gridhead.net/content/images/2025/08/infa_rslt.png)
* [Fractured Halo - Workspace](https://gridhead.net/content/images/2025/08/ftho.png)
* [Flame-Forged Insight - Workspace](https://gridhead.net/content/images/2025/08/ffit.png)
# Appeal
While allowing you to experiment with various builds and share them for later, Loadouts for Genshin Impact lets you take calculated risks by showing you the potential of your characters with certain artifacts and weapons equipped that you might not even own. Loadouts for Genshin Impact has been and always be a free and open source software project and we are committed to delivering a quality experience with every release we make.
# Disclaimer
With an extensive
PyPI
gi-loadouts
Loadouts for Genshin Impact
suite of over 1465 diverse functionality tests and impeccable 100% source code coverage, we proudly invite auditors and analysts from MiHoYo and other organizations to review our free and open source codebase. This thorough transparency underscores our unwavering commitment to maintaining the fairness and integrity of the game.
The users of this ecosystem application can have complete confidence that their accounts are safe from warnings, suspensions or terminations when using this project. The ecosystem application ensures complete compliance with the terms of services and the regulations regarding third-party software established by MiHoYo for Genshin Impact.
All rights to Genshin Impact assets used in this project are reserved by miHoYo Ltd. and Cognosphere Pte., Ltd. Other properties belong to their respective owners.
https://redd.it/1mm8g25
@r_opensource
The users of this ecosystem application can have complete confidence that their accounts are safe from warnings, suspensions or terminations when using this project. The ecosystem application ensures complete compliance with the terms of services and the regulations regarding third-party software established by MiHoYo for Genshin Impact.
All rights to Genshin Impact assets used in this project are reserved by miHoYo Ltd. and Cognosphere Pte., Ltd. Other properties belong to their respective owners.
https://redd.it/1mm8g25
@r_opensource
Reddit
From the opensource community on Reddit: We just made Loadouts for Genshin Impact available as an RPM package in the official Fedora…
Explore this post and more from the opensource community
I made a better Political Compass test
Hi guys, I was frustrated when doing the political compass, so I made a cool quiz called Votely.
It’s basically the Political Compass with more accuracy and depth, but still quick to take.
We’ve also been adding more features at the request of our users, including:
1. A progressive to conservative axis to capture social views
2. 81 ideologies instead of just four quadrants
3. percentage sliders from -100% to 100% for nuance
4. a very fun 3D cube you can spin around
5. short and long versions depending on how much time you have
Check it out at https://votelyquiz.juleslemee.com/ and let me know what you think! I’d love feedback on any features you’d like to see next.
The code is fully open source at https://github.com/juleslemee/Votely
https://redd.it/1mm81we
@r_opensource
Hi guys, I was frustrated when doing the political compass, so I made a cool quiz called Votely.
It’s basically the Political Compass with more accuracy and depth, but still quick to take.
We’ve also been adding more features at the request of our users, including:
1. A progressive to conservative axis to capture social views
2. 81 ideologies instead of just four quadrants
3. percentage sliders from -100% to 100% for nuance
4. a very fun 3D cube you can spin around
5. short and long versions depending on how much time you have
Check it out at https://votelyquiz.juleslemee.com/ and let me know what you think! I’d love feedback on any features you’d like to see next.
The code is fully open source at https://github.com/juleslemee/Votely
https://redd.it/1mm81we
@r_opensource
Votely Political Quiz
The Votely Political Quiz - 3D Political Compass
Most accurate political quiz: 39 axes, 81 ideologies, 3D visualization
Useful GitHub template for Git projects and readme.md
https://github.com/dec0dOS/amazing-github-template
https://redd.it/1mmc2cr
@r_opensource
https://github.com/dec0dOS/amazing-github-template
https://redd.it/1mmc2cr
@r_opensource
GitHub
GitHub - dec0dOS/amazing-github-template: 🚀 Useful README.md, LICENSE, CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, GitHub…
🚀 Useful README.md, LICENSE, CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, GitHub Issues, Pull Requests and Actions templates to jumpstart your projects. - GitHub - dec0dOS/amazing-github-temp...
Show HN: I open sourced my screenshot tool that i made for myself.
https://github.com/jellydeck/moocup/
features:
\- 3d transform, scale up and down image
\- Change position, scale
\- Apply fixed margin on all axis
\- Smart magic border, color, width
\- Single click export to Webp, PNG, JPEG.
you can also self-host by following instructions in Readme, or using Railway for single click deploy.
It's a personal tool I made for myself. I needed good photos to showcase my work, and all the available options felt quite right.
so i made one myself.
lemme know if you have any ideas for features.
https://redd.it/1mmcqep
@r_opensource
https://github.com/jellydeck/moocup/
features:
\- 3d transform, scale up and down image
\- Change position, scale
\- Apply fixed margin on all axis
\- Smart magic border, color, width
\- Single click export to Webp, PNG, JPEG.
you can also self-host by following instructions in Readme, or using Railway for single click deploy.
It's a personal tool I made for myself. I needed good photos to showcase my work, and all the available options felt quite right.
so i made one myself.
lemme know if you have any ideas for features.
https://redd.it/1mmcqep
@r_opensource
GitHub
GitHub - jellydeck/moocup: stunning screenshots in seconds
stunning screenshots in seconds. Contribute to jellydeck/moocup development by creating an account on GitHub.
Open Source to Business – Your Suggestions Needed
Hello folks,
I have developed an open tool designed to assist researchers and academics with article and literature research and search. My question is—how can I best leverage this tool from a business perspective?
My current plan is to launch it as a free tool for now, with frequent updates and new features in the pipeline. I would appreciate any ideas or suggestions you can share.
https://redd.it/1mme31x
@r_opensource
Hello folks,
I have developed an open tool designed to assist researchers and academics with article and literature research and search. My question is—how can I best leverage this tool from a business perspective?
My current plan is to launch it as a free tool for now, with frequent updates and new features in the pipeline. I would appreciate any ideas or suggestions you can share.
https://redd.it/1mme31x
@r_opensource
Reddit
From the opensource community on Reddit
Explore this post and more from the opensource community
A free, open-source “computer freeze” tool?
I’m keen to hear everyone’s thoughts on building a program that can effectively “freeze” your computer so no changes are written to the drive.
Basically a modern version of Toolwiz Time Freeze (link to Wayback Machine). I have tried to reach the owners, but I can't find any recent contact information. My use case is for when we are sharing devices in a setting where Windows Enterprise is unrealistic.
I know Deepfreeze exists, but I would rather use something free and open source. My primary objective is to get a hold of someone at Timefreeze to ask for the code, but I don't know how realistic this is.
https://redd.it/1mmi00a
@r_opensource
I’m keen to hear everyone’s thoughts on building a program that can effectively “freeze” your computer so no changes are written to the drive.
Basically a modern version of Toolwiz Time Freeze (link to Wayback Machine). I have tried to reach the owners, but I can't find any recent contact information. My use case is for when we are sharing devices in a setting where Windows Enterprise is unrealistic.
I know Deepfreeze exists, but I would rather use something free and open source. My primary objective is to get a hold of someone at Timefreeze to ask for the code, but I don't know how realistic this is.
https://redd.it/1mmi00a
@r_opensource
KmpEssentials is a library that contains apis (40+ Modules) to accelerate your development. Everything from managing the Battery, File System, getting Package information, or taking Photos. Supports iOS, Android, AppleWatch, JVM & JS
https://github.com/Ares-Defence-Labs/KmpEssentials
https://redd.it/1mmk3wg
@r_opensource
https://github.com/Ares-Defence-Labs/KmpEssentials
https://redd.it/1mmk3wg
@r_opensource
GitHub
GitHub - Ares-Defence-Labs/KmpEssentials: KmpEssentials is a library that contains apis (40+ Modules) to accelerate your development.…
KmpEssentials is a library that contains apis (40+ Modules) to accelerate your development. Everything from managing the Battery, File System, getting Package information, or taking Photos. Support...
Pybotchi 101: Simple MCP Integration
# As Client
### Prerequisite
- LLM Declaration
```python
from pybotchi import LLM
from langchain_openai import ChatOpenAI
LLM.add(
base = ChatOpenAI(.....)
)
```
- MCP Server (`MCP-Atlassian`)
> docker run --rm -p 9000:9000 -i --env-file your-env.env ghcr.io/sooperset/mcp-atlassian:latest --transport streamable-http --port 9000 -vv
### Simple Pybotchi Action
```python
from pybotchi import ActionReturn, MCPAction, MCPConnection
class AtlassianAgent(MCPAction):
"""Atlassian query."""
__mcp_connections__ = [
MCPConnection("jira", "http://0.0.0.0:9000/mcp", require_integration=False)
]
async def post(self, context):
readable_response = await context.llm.ainvoke(context.prompts)
await context.add_response(self, readable_response.content)
return ActionReturn.END
```
- `post` is only recommended if mcp tools responses is not in natural language yet.
- You can leverage `post` or `commit_context` for final response generation
### View Graph
```python
from asyncio import run
from pybotchi import graph
print(run(graph(AtlassianAgent)))
```
#### **Result**
```
flowchart TD
mcp.jira.JiraCreateIssueLink[mcp.jira.JiraCreateIssueLink]
mcp.jira.JiraUpdateSprint[mcp.jira.JiraUpdateSprint]
mcp.jira.JiraDownloadAttachments[mcp.jira.JiraDownloadAttachments]
mcp.jira.JiraDeleteIssue[mcp.jira.JiraDeleteIssue]
mcp.jira.JiraGetTransitions[mcp.jira.JiraGetTransitions]
mcp.jira.JiraUpdateIssue[mcp.jira.JiraUpdateIssue]
mcp.jira.JiraSearch[mcp.jira.JiraSearch]
mcp.jira.JiraGetAgileBoards[mcp.jira.JiraGetAgileBoards]
mcp.jira.JiraAddComment[mcp.jira.JiraAddComment]
mcp.jira.JiraGetSprintsFromBoard[mcp.jira.JiraGetSprintsFromBoard]
mcp.jira.JiraGetSprintIssues[mcp.jira.JiraGetSprintIssues]
__main__.AtlassianAgent[__main__.AtlassianAgent]
mcp.jira.JiraLinkToEpic[mcp.jira.JiraLinkToEpic]
mcp.jira.JiraCreateIssue[mcp.jira.JiraCreateIssue]
mcp.jira.JiraBatchCreateIssues[mcp.jira.JiraBatchCreateIssues]
mcp.jira.JiraSearchFields[mcp.jira.JiraSearchFields]
mcp.jira.JiraGetWorklog[mcp.jira.JiraGetWorklog]
mcp.jira.JiraTransitionIssue[mcp.jira.JiraTransitionIssue]
mcp.jira.JiraGetProjectVersions[mcp.jira.JiraGetProjectVersions]
mcp.jira.JiraGetUserProfile[mcp.jira.JiraGetUserProfile]
mcp.jira.JiraGetBoardIssues[mcp.jira.JiraGetBoardIssues]
mcp.jira.JiraGetProjectIssues[mcp.jira.JiraGetProjectIssues]
mcp.jira.JiraAddWorklog[mcp.jira.JiraAddWorklog]
mcp.jira.JiraCreateSprint[mcp.jira.JiraCreateSprint]
mcp.jira.JiraGetLinkTypes[mcp.jira.JiraGetLinkTypes]
mcp.jira.JiraRemoveIssueLink[mcp.jira.JiraRemoveIssueLink]
mcp.jira.JiraGetIssue[mcp.jira.JiraGetIssue]
mcp.jira.JiraBatchGetChangelogs[mcp.jira.JiraBatchGetChangelogs]
__main__.AtlassianAgent --> mcp.jira.JiraCreateIssueLink
__main__.AtlassianAgent --> mcp.jira.JiraGetLinkTypes
__main__.AtlassianAgent --> mcp.jira.JiraDownloadAttachments
__main__.AtlassianAgent --> mcp.jira.JiraAddWorklog
__main__.AtlassianAgent --> mcp.jira.JiraRemoveIssueLink
__main__.AtlassianAgent --> mcp.jira.JiraCreateIssue
__main__.AtlassianAgent --> mcp.jira.JiraLinkToEpic
__main__.AtlassianAgent --> mcp.jira.JiraGetSprintsFromBoard
__main__.AtlassianAgent --> mcp.jira.JiraGetAgileBoards
__main__.AtlassianAgent --> mcp.jira.JiraBatchCreateIssues
__main__.AtlassianAgent --> mcp.jira.JiraSearchFields
__main__.AtlassianAgent --> mcp.jira.JiraGetSprintIssues
__main__.AtlassianAgent --> mcp.jira.JiraSearch
__main__.AtlassianAgent --> mcp.jira.JiraAddComment
__main__.AtlassianAgent --> mcp.jira.JiraDeleteIssue
__main__.AtlassianAgent --> mcp.jira.JiraUpdateIssue
__main__.AtlassianAgent --> mcp.jira.JiraGetProjectVersions
__main__.AtlassianAgent --> mcp.jira.JiraGetBoardIssues
__main__.AtlassianAgent --> mcp.jira.JiraUpdateSprint
__main__.AtlassianAgent --> mcp.jira.JiraBatchGetChangelogs
__main__.AtlassianAgent --> mcp.jira.JiraGetUserProfile
__main__.AtlassianAgent --> mcp.jira.JiraGetWorklog
__main__.AtlassianAgent --> mcp.jira.JiraGetIssue
__main__.AtlassianAgent --> mcp.jira.JiraGetTransitions
__main__.AtlassianAgent -->
# As Client
### Prerequisite
- LLM Declaration
```python
from pybotchi import LLM
from langchain_openai import ChatOpenAI
LLM.add(
base = ChatOpenAI(.....)
)
```
- MCP Server (`MCP-Atlassian`)
> docker run --rm -p 9000:9000 -i --env-file your-env.env ghcr.io/sooperset/mcp-atlassian:latest --transport streamable-http --port 9000 -vv
### Simple Pybotchi Action
```python
from pybotchi import ActionReturn, MCPAction, MCPConnection
class AtlassianAgent(MCPAction):
"""Atlassian query."""
__mcp_connections__ = [
MCPConnection("jira", "http://0.0.0.0:9000/mcp", require_integration=False)
]
async def post(self, context):
readable_response = await context.llm.ainvoke(context.prompts)
await context.add_response(self, readable_response.content)
return ActionReturn.END
```
- `post` is only recommended if mcp tools responses is not in natural language yet.
- You can leverage `post` or `commit_context` for final response generation
### View Graph
```python
from asyncio import run
from pybotchi import graph
print(run(graph(AtlassianAgent)))
```
#### **Result**
```
flowchart TD
mcp.jira.JiraCreateIssueLink[mcp.jira.JiraCreateIssueLink]
mcp.jira.JiraUpdateSprint[mcp.jira.JiraUpdateSprint]
mcp.jira.JiraDownloadAttachments[mcp.jira.JiraDownloadAttachments]
mcp.jira.JiraDeleteIssue[mcp.jira.JiraDeleteIssue]
mcp.jira.JiraGetTransitions[mcp.jira.JiraGetTransitions]
mcp.jira.JiraUpdateIssue[mcp.jira.JiraUpdateIssue]
mcp.jira.JiraSearch[mcp.jira.JiraSearch]
mcp.jira.JiraGetAgileBoards[mcp.jira.JiraGetAgileBoards]
mcp.jira.JiraAddComment[mcp.jira.JiraAddComment]
mcp.jira.JiraGetSprintsFromBoard[mcp.jira.JiraGetSprintsFromBoard]
mcp.jira.JiraGetSprintIssues[mcp.jira.JiraGetSprintIssues]
__main__.AtlassianAgent[__main__.AtlassianAgent]
mcp.jira.JiraLinkToEpic[mcp.jira.JiraLinkToEpic]
mcp.jira.JiraCreateIssue[mcp.jira.JiraCreateIssue]
mcp.jira.JiraBatchCreateIssues[mcp.jira.JiraBatchCreateIssues]
mcp.jira.JiraSearchFields[mcp.jira.JiraSearchFields]
mcp.jira.JiraGetWorklog[mcp.jira.JiraGetWorklog]
mcp.jira.JiraTransitionIssue[mcp.jira.JiraTransitionIssue]
mcp.jira.JiraGetProjectVersions[mcp.jira.JiraGetProjectVersions]
mcp.jira.JiraGetUserProfile[mcp.jira.JiraGetUserProfile]
mcp.jira.JiraGetBoardIssues[mcp.jira.JiraGetBoardIssues]
mcp.jira.JiraGetProjectIssues[mcp.jira.JiraGetProjectIssues]
mcp.jira.JiraAddWorklog[mcp.jira.JiraAddWorklog]
mcp.jira.JiraCreateSprint[mcp.jira.JiraCreateSprint]
mcp.jira.JiraGetLinkTypes[mcp.jira.JiraGetLinkTypes]
mcp.jira.JiraRemoveIssueLink[mcp.jira.JiraRemoveIssueLink]
mcp.jira.JiraGetIssue[mcp.jira.JiraGetIssue]
mcp.jira.JiraBatchGetChangelogs[mcp.jira.JiraBatchGetChangelogs]
__main__.AtlassianAgent --> mcp.jira.JiraCreateIssueLink
__main__.AtlassianAgent --> mcp.jira.JiraGetLinkTypes
__main__.AtlassianAgent --> mcp.jira.JiraDownloadAttachments
__main__.AtlassianAgent --> mcp.jira.JiraAddWorklog
__main__.AtlassianAgent --> mcp.jira.JiraRemoveIssueLink
__main__.AtlassianAgent --> mcp.jira.JiraCreateIssue
__main__.AtlassianAgent --> mcp.jira.JiraLinkToEpic
__main__.AtlassianAgent --> mcp.jira.JiraGetSprintsFromBoard
__main__.AtlassianAgent --> mcp.jira.JiraGetAgileBoards
__main__.AtlassianAgent --> mcp.jira.JiraBatchCreateIssues
__main__.AtlassianAgent --> mcp.jira.JiraSearchFields
__main__.AtlassianAgent --> mcp.jira.JiraGetSprintIssues
__main__.AtlassianAgent --> mcp.jira.JiraSearch
__main__.AtlassianAgent --> mcp.jira.JiraAddComment
__main__.AtlassianAgent --> mcp.jira.JiraDeleteIssue
__main__.AtlassianAgent --> mcp.jira.JiraUpdateIssue
__main__.AtlassianAgent --> mcp.jira.JiraGetProjectVersions
__main__.AtlassianAgent --> mcp.jira.JiraGetBoardIssues
__main__.AtlassianAgent --> mcp.jira.JiraUpdateSprint
__main__.AtlassianAgent --> mcp.jira.JiraBatchGetChangelogs
__main__.AtlassianAgent --> mcp.jira.JiraGetUserProfile
__main__.AtlassianAgent --> mcp.jira.JiraGetWorklog
__main__.AtlassianAgent --> mcp.jira.JiraGetIssue
__main__.AtlassianAgent --> mcp.jira.JiraGetTransitions
__main__.AtlassianAgent -->
GitHub
GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.
mcp.jira.JiraTransitionIssue
__main__.AtlassianAgent --> mcp.jira.JiraCreateSprint
__main__.AtlassianAgent --> mcp.jira.JiraGetProjectIssues
```
### Execute
```python
from asyncio import run
from pybotchi import Context
async def test() -> None:
"""Chat."""
context = Context(
prompts=[
{
"role": "system",
"content": "Use Jira Tool/s until user's request is addressed",
},
{
"role": "user",
"content": "give me one inprogress ticket currently assigned to me?",
},
]
)
await context.start(AtlassianAgent)
print(context.prompts[-1]["content"])
run(test())
```
#### **Result**
```
Here is one "In Progress" ticket currently assigned to you:
- Ticket Key: BAAI-244
- Summary: [FOR TESTING ONLY]: Title 1
- Denoscription: Denoscription 1
- Issue Type: Task
- Status: In Progress
- Priority: Medium
- Created: 2025-08-11
- Updated: 2025-08-11
```
## Override Tools (JiraSearch)
```
from pybotchi import ActionReturn, MCPAction, MCPConnection, MCPToolAction
class AtlassianAgent(MCPAction):
"""Atlassian query."""
__mcp_connections__ = [
MCPConnection("jira", "http://0.0.0.0:9000/mcp", require_integration=False)
]
async def post(self, context):
readable_response = await context.llm.ainvoke(context.prompts)
await context.add_response(self, readable_response.content)
return ActionReturn.END
class JiraSearch(MCPToolAction):
async def pre(self, context):
print("You can do anything here or even call `super().pre`")
return await super().pre(context)
```
### View Overridden Graph
```
flowchart TD
... same list ...
mcp.jira.patched.JiraGetIssue[mcp.jira.patched.JiraGetIssue]
... same list ...
__main__.AtlassianAgent --> mcp.jira.patched.JiraGetIssue
... same list ...
```
#### **Updated Result**
```
You can do anything here or even call `super().pre`
Here is one "In Progress" ticket currently assigned to you:
- Ticket Key: BAAI-244
- Summary: [FOR TESTING ONLY]: Title 1
- Denoscription: Denoscription 1
- Issue Type: Task
- Status: In Progress
- Priority: Medium
- Created: 2025-08-11
- Last Updated: 2025-08-11
- Reporter: Alexie Madolid
If you need details from another ticket or more information, let me know!
```
# As Server
#### **server.py**
```python
from contextlib import AsyncExitStack, asynccontextmanager
from fastapi import FastAPI
from pybotchi import Action, ActionReturn, start_mcp_servers
class TranslateToEnglish(Action):
"""Translate sentence to english."""
__mcp_groups__ = ["your_endpoint1", "your_endpoint2"]
sentence: str
async def pre(self, context):
message = await context.llm.ainvoke(
f"Translate this to english: {self.sentence}"
)
await context.add_response(self, message.content)
return ActionReturn.GO
class TranslateToFilipino(Action):
"""Translate sentence to filipino."""
__mcp_groups__ = ["your_endpoint2"]
sentence: str
async def pre(self, context):
message = await context.llm.ainvoke(
f"Translate this to Filipino: {self.sentence}"
)
await context.add_response(self, message.content)
return ActionReturn.GO
@asynccontextmanager
async def lifespan(app):
"""Override life cycle."""
async with AsyncExitStack() as stack:
await start_mcp_servers(app, stack)
yield
app = FastAPI(lifespan=lifespan)
```
#### **client.py**
```bash
from asyncio import run
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def main(endpoint: int):
async with streamablehttp_client(
f"http://localhost:8000/your_endpoint{endpoint}/mcp",
) as (
read_stream,
write_stream,
_,
):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
tools = await session.list_tools()
response = await session.call_tool(
__main__.AtlassianAgent --> mcp.jira.JiraCreateSprint
__main__.AtlassianAgent --> mcp.jira.JiraGetProjectIssues
```
### Execute
```python
from asyncio import run
from pybotchi import Context
async def test() -> None:
"""Chat."""
context = Context(
prompts=[
{
"role": "system",
"content": "Use Jira Tool/s until user's request is addressed",
},
{
"role": "user",
"content": "give me one inprogress ticket currently assigned to me?",
},
]
)
await context.start(AtlassianAgent)
print(context.prompts[-1]["content"])
run(test())
```
#### **Result**
```
Here is one "In Progress" ticket currently assigned to you:
- Ticket Key: BAAI-244
- Summary: [FOR TESTING ONLY]: Title 1
- Denoscription: Denoscription 1
- Issue Type: Task
- Status: In Progress
- Priority: Medium
- Created: 2025-08-11
- Updated: 2025-08-11
```
## Override Tools (JiraSearch)
```
from pybotchi import ActionReturn, MCPAction, MCPConnection, MCPToolAction
class AtlassianAgent(MCPAction):
"""Atlassian query."""
__mcp_connections__ = [
MCPConnection("jira", "http://0.0.0.0:9000/mcp", require_integration=False)
]
async def post(self, context):
readable_response = await context.llm.ainvoke(context.prompts)
await context.add_response(self, readable_response.content)
return ActionReturn.END
class JiraSearch(MCPToolAction):
async def pre(self, context):
print("You can do anything here or even call `super().pre`")
return await super().pre(context)
```
### View Overridden Graph
```
flowchart TD
... same list ...
mcp.jira.patched.JiraGetIssue[mcp.jira.patched.JiraGetIssue]
... same list ...
__main__.AtlassianAgent --> mcp.jira.patched.JiraGetIssue
... same list ...
```
#### **Updated Result**
```
You can do anything here or even call `super().pre`
Here is one "In Progress" ticket currently assigned to you:
- Ticket Key: BAAI-244
- Summary: [FOR TESTING ONLY]: Title 1
- Denoscription: Denoscription 1
- Issue Type: Task
- Status: In Progress
- Priority: Medium
- Created: 2025-08-11
- Last Updated: 2025-08-11
- Reporter: Alexie Madolid
If you need details from another ticket or more information, let me know!
```
# As Server
#### **server.py**
```python
from contextlib import AsyncExitStack, asynccontextmanager
from fastapi import FastAPI
from pybotchi import Action, ActionReturn, start_mcp_servers
class TranslateToEnglish(Action):
"""Translate sentence to english."""
__mcp_groups__ = ["your_endpoint1", "your_endpoint2"]
sentence: str
async def pre(self, context):
message = await context.llm.ainvoke(
f"Translate this to english: {self.sentence}"
)
await context.add_response(self, message.content)
return ActionReturn.GO
class TranslateToFilipino(Action):
"""Translate sentence to filipino."""
__mcp_groups__ = ["your_endpoint2"]
sentence: str
async def pre(self, context):
message = await context.llm.ainvoke(
f"Translate this to Filipino: {self.sentence}"
)
await context.add_response(self, message.content)
return ActionReturn.GO
@asynccontextmanager
async def lifespan(app):
"""Override life cycle."""
async with AsyncExitStack() as stack:
await start_mcp_servers(app, stack)
yield
app = FastAPI(lifespan=lifespan)
```
#### **client.py**
```bash
from asyncio import run
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def main(endpoint: int):
async with streamablehttp_client(
f"http://localhost:8000/your_endpoint{endpoint}/mcp",
) as (
read_stream,
write_stream,
_,
):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
tools = await session.list_tools()
response = await session.call_tool(
"TranslateToEnglish",
arguments={
"sentence": "Kamusta?",
},
)
print(f"Available tools: {[tool.name for tool in tools.tools]}")
print(response.content[0].text)
run(main(1))
run(main(2))
```
#### **Result**
```
Available tools: ['TranslateToEnglish']
"Kamusta?" in English is "How are you?"
Available tools: ['TranslateToFilipino', 'TranslateToEnglish']
"Kamusta?" translates to "How are you?" in English.
```
https://redd.it/1mmnr5y
@r_opensource
arguments={
"sentence": "Kamusta?",
},
)
print(f"Available tools: {[tool.name for tool in tools.tools]}")
print(response.content[0].text)
run(main(1))
run(main(2))
```
#### **Result**
```
Available tools: ['TranslateToEnglish']
"Kamusta?" in English is "How are you?"
Available tools: ['TranslateToFilipino', 'TranslateToEnglish']
"Kamusta?" translates to "How are you?" in English.
```
https://redd.it/1mmnr5y
@r_opensource
Reddit
From the opensource community on Reddit
Explore this post and more from the opensource community
Good resources for learning about managing open source and open source "business models".
I've started to soft launch my first open source project, which is a niche project tailored for a non-programming community.
I attended an event yesterday and I feel buoyed by the response I got. I had a link to a very basic version of my project at the event. My project was very well received and I feel as if I may be on to something. People seem really stoked. It's only one event, but I feel confident now that I can copy that success in getting buzz, and keep building the project and it will just get better.
I have NEVER done anything like this and I'm trying use this momentum while also building a roadmap in my brain of how to sustain and keep the ball rolling, while also keep the project from sucking.
I'm motivated to go open source rather than commercial because I think it'll be much much easier to build a community this way. There are plenty of commercial alternatives, but not really any stand out open source projects. I'm also a relatively green programmer (competent, but not a wizard. ~5 YOE building stuff).
The few questions on my mind now that I'm slowly making the idea public:
-Competiveness. Because it's open source, anyone can use and modify my code. Obviously this is a really neat part of open source. I also can't help shake the quiet instinct saying "what if someone steals it and builds something better and I get left out" or whatever.
-Monetization. I would be lying if I said I don't ever want to money from it. Given the availability of other commercial alternatives, I don't think monetizing the product itself is a winning strategy. I do think that if the project works really well and has a strong community, I can use that community to sell things, provide monetized support, build offshoot/complementary products for money, etc.
I want to make sure I do this in an ethical and honest way. If people are volunteering their time to contribute, even if I monetize something tangential, I'm still benefiting from these people's free work indirectly. The last thing I want to do is alienate the community because of how I personally benefit from their collaboration.
-Collaboration. Now that the product is starting to get "out there" a little bit, I do have some programmers and graphic designers who are starting to contribute small pieces. Now I need to built almost a secondary project for creating tickets, documentation, etc to make it really really easy to collaborate and contribute.
Anyways, I'm extremely excited by the project because it's been something I've been messing with for last five years. This project is more or less the reason I started programming in the first place. I thought "I wanna build that..." which motivated me to learn and go back to school for a MS, get better at math, etc.
I would be deeply grateful for any advice, resources, etc from people with more experience while I navigate these early questions. My mind is racing with ideas after this soft test launch, and my motivation for this project is as high as it's ever been.
https://redd.it/1mmpi26
@r_opensource
I've started to soft launch my first open source project, which is a niche project tailored for a non-programming community.
I attended an event yesterday and I feel buoyed by the response I got. I had a link to a very basic version of my project at the event. My project was very well received and I feel as if I may be on to something. People seem really stoked. It's only one event, but I feel confident now that I can copy that success in getting buzz, and keep building the project and it will just get better.
I have NEVER done anything like this and I'm trying use this momentum while also building a roadmap in my brain of how to sustain and keep the ball rolling, while also keep the project from sucking.
I'm motivated to go open source rather than commercial because I think it'll be much much easier to build a community this way. There are plenty of commercial alternatives, but not really any stand out open source projects. I'm also a relatively green programmer (competent, but not a wizard. ~5 YOE building stuff).
The few questions on my mind now that I'm slowly making the idea public:
-Competiveness. Because it's open source, anyone can use and modify my code. Obviously this is a really neat part of open source. I also can't help shake the quiet instinct saying "what if someone steals it and builds something better and I get left out" or whatever.
-Monetization. I would be lying if I said I don't ever want to money from it. Given the availability of other commercial alternatives, I don't think monetizing the product itself is a winning strategy. I do think that if the project works really well and has a strong community, I can use that community to sell things, provide monetized support, build offshoot/complementary products for money, etc.
I want to make sure I do this in an ethical and honest way. If people are volunteering their time to contribute, even if I monetize something tangential, I'm still benefiting from these people's free work indirectly. The last thing I want to do is alienate the community because of how I personally benefit from their collaboration.
-Collaboration. Now that the product is starting to get "out there" a little bit, I do have some programmers and graphic designers who are starting to contribute small pieces. Now I need to built almost a secondary project for creating tickets, documentation, etc to make it really really easy to collaborate and contribute.
Anyways, I'm extremely excited by the project because it's been something I've been messing with for last five years. This project is more or less the reason I started programming in the first place. I thought "I wanna build that..." which motivated me to learn and go back to school for a MS, get better at math, etc.
I would be deeply grateful for any advice, resources, etc from people with more experience while I navigate these early questions. My mind is racing with ideas after this soft test launch, and my motivation for this project is as high as it's ever been.
https://redd.it/1mmpi26
@r_opensource
Reddit
From the opensource community on Reddit
Explore this post and more from the opensource community
SED: Open source semantic layer and AI-data firewall for safe, governed database access
Hey r/opensource!
I wanted to share a project I’ve been building called SED, an open source semantic layer and AI-data firewall designed to make AI-powered database access safe, governed, and compliant.
SED automatically analyzes your database schema to create a semantic layer that understands your data and business logic. It translates natural language queries into secure and optimized SQL while enforcing access controls, compliance, and governance rules dynamically. The system detects schema changes to keep everything in sync and operates entirely locally, ensuring your data never leaves your environment.
Essentially, it serves as a protective firewall between AI models and sensitive databases to prevent unauthorized or unsafe access.
If you’re interested in projects around AI, databases, and data security or if you’re building AI-native apps that query data ,I’d love for you to check it out, try the CLI tool, and share your feedback.
Here’s the repo: https://github.com/holy182/sed-cli
Docs & Website: Here
Happy to hear your thoughts and feedback, thanks for checking this out!
https://redd.it/1mmos4r
@r_opensource
Hey r/opensource!
I wanted to share a project I’ve been building called SED, an open source semantic layer and AI-data firewall designed to make AI-powered database access safe, governed, and compliant.
SED automatically analyzes your database schema to create a semantic layer that understands your data and business logic. It translates natural language queries into secure and optimized SQL while enforcing access controls, compliance, and governance rules dynamically. The system detects schema changes to keep everything in sync and operates entirely locally, ensuring your data never leaves your environment.
Essentially, it serves as a protective firewall between AI models and sensitive databases to prevent unauthorized or unsafe access.
If you’re interested in projects around AI, databases, and data security or if you’re building AI-native apps that query data ,I’d love for you to check it out, try the CLI tool, and share your feedback.
Here’s the repo: https://github.com/holy182/sed-cli
Docs & Website: Here
Happy to hear your thoughts and feedback, thanks for checking this out!
https://redd.it/1mmos4r
@r_opensource
GitHub
GitHub - holy182/sed-cli: Database Intelligence Automation, a local-first firewall for LLMs that automatically discovers database…
Database Intelligence Automation, a local-first firewall for LLMs that automatically discovers database structure, generates semantic business rules, translates natural language to safe SQL, and en...
Warp Terminal is terrible, hear me out.
Heya, Sorry to say this, But i think Warp Terminal is terrible, Don't get me wrong, I really love the way it fully automates coding on your pc while you only have to give the prompt, But 150 ai requests a month without refresh every day? Come on, that's terrible, Having to wait 30 days for 150 ai requests, At least give us a day cap, Waiting 24 hours, i can deal with that, But 30 days? Good grief...
Do any of you know good alternatives for Warp Terminal?
https://redd.it/1mms21y
@r_opensource
Heya, Sorry to say this, But i think Warp Terminal is terrible, Don't get me wrong, I really love the way it fully automates coding on your pc while you only have to give the prompt, But 150 ai requests a month without refresh every day? Come on, that's terrible, Having to wait 30 days for 150 ai requests, At least give us a day cap, Waiting 24 hours, i can deal with that, But 30 days? Good grief...
Do any of you know good alternatives for Warp Terminal?
https://redd.it/1mms21y
@r_opensource
Reddit
From the opensource community on Reddit
Explore this post and more from the opensource community
Want to learn Gleam? Help me translate timeago: a lightweight library for formatting timestamps as human-readable relative time strings.
Link: https://github.com/ayoung19/timeago
Currently only pl_pl, es_es, it_it, de_de, fr, pt_br, and en_us are translated. If you know a language not in that list and want to help with the translation effort feel free to make a PR!
You can see examples of contributions/PRs here: https://github.com/ayoung19/timeago/pulls?q=is%3Apr+is%3Aclosed
https://redd.it/1mmrblg
@r_opensource
Link: https://github.com/ayoung19/timeago
Currently only pl_pl, es_es, it_it, de_de, fr, pt_br, and en_us are translated. If you know a language not in that list and want to help with the translation effort feel free to make a PR!
You can see examples of contributions/PRs here: https://github.com/ayoung19/timeago/pulls?q=is%3Apr+is%3Aclosed
https://redd.it/1mmrblg
@r_opensource
GitHub
GitHub - ayoung19/timeago: A lightweight Gleam library for formatting timestamps as human-readable relative time strings (e.g.…
A lightweight Gleam library for formatting timestamps as human-readable relative time strings (e.g., '5 minutes ago', 'in 2 hours') with support for multiple locales...
nPhoneKIT ideas/discussion/help/advice?
So, I have an open source phone unlocking tool made in Python, and called it nPhoneKIT.
I added a phone debloater tool and IMEI blacklist checker as well, but I can't think of any more ideas
Anyone have ideas or input/suggestions?
(Link: https://nphonekit.dev)
Also, does anyone have general advice for a project like this, competing with other big tools? How long will it take to grow significantly? What can I do to help it?
https://redd.it/1mmur2t
@r_opensource
So, I have an open source phone unlocking tool made in Python, and called it nPhoneKIT.
I added a phone debloater tool and IMEI blacklist checker as well, but I can't think of any more ideas
Anyone have ideas or input/suggestions?
(Link: https://nphonekit.dev)
Also, does anyone have general advice for a project like this, competing with other big tools? How long will it take to grow significantly? What can I do to help it?
https://redd.it/1mmur2t
@r_opensource
nphonekit.dev
nPhoneKIT - Open Source Android Unlock Toolkit
Unlock your Android device with transparency. FRP, screen unlock & more, all in Python, all open source.
The Open Source Dilemma: Who Pays for Our Digital Infrastructure?
https://brainnoises.com/blog/open-source-dilemma/
https://redd.it/1mmxw2c
@r_opensource
https://brainnoises.com/blog/open-source-dilemma/
https://redd.it/1mmxw2c
@r_opensource
Brainnoises
The Open Source Dilemma: Who Pays for Our Digital Infrastructure?
Our digital world is built on a fragile foundation: critical open-source projects maintained by a few unpaid volunteers. After major security scares, it's time to ask a hard question: is this model sustainable, or are we waiting for a collapse?
Open-sourced my vector database project
Been using this for semantic search in my personal projects. Figured others might find it useful.
Main thing: you can swap indexing algorithms without rebuilding everything.
GitHub: https://github.com/doganarif/vectordb
https://redd.it/1mn0hyj
@r_opensource
Been using this for semantic search in my personal projects. Figured others might find it useful.
Main thing: you can swap indexing algorithms without rebuilding everything.
GitHub: https://github.com/doganarif/vectordb
https://redd.it/1mn0hyj
@r_opensource
GitHub
GitHub - doganarif/vectordb
Contribute to doganarif/vectordb development by creating an account on GitHub.