Synalinks
From idea to production in just few lines: Graph-Based Programmable Neuro-Symbolic LM Framework - a production-first LM framework built with decade old Deep Learning best practices
Last verified:
What is Synalinks?
Synalinks is an open-source neuro-symbolic framework that makes it simple to create, train, evaluate, and deploy advanced Language Model (LM) applications including graph RAGs, autonomous agents, multi-agent systems, and self-evolving systems. It is an adaptation of Keras 3 focused on neuro-symbolic systems and in-context reinforcement learning, which enhances LM predictions and accuracy without changing model weights.
The framework follows the principle of progressive disclosure of complexity, meaning simple workflows are quick and easy while advanced systems are possible through a clear learning path. Synalinks combines constrained structured output with in-context RL to ensure both format and content correctness of LM outputs, and automatically optimizes pipelines by detecting parallel processes.
Synalinks is designed for a diverse range of users including professionals, AI researchers, students, independent developers, and hobbyists. While a background in Machine Learning and Deep Learning is advantageous, it is not required—anyone with Python programming skills can use it. The framework seamlessly integrates multiple LM providers (Ollama, OpenAI, Azure, Anthropic, Mistral, Groq) and graph databases (Neo4J, MemGraph).
Key capabilities include building optimized prompts with examples/instructions at each step using In-Context Reinforcement Learning, easily editing pipelines and re-running training, documenting ML workflows with plots, versioning prompts/pipelines via JSON serialization, and deploying REST APIs or MCP servers out-of-the-box with FastAPI and FastMCP.
Synalinks pricing
Pricing model: Freemium
Synalinks is completely free and open-source under the Apache-2.0 license. It can be installed via 'uv pip install synalinks' and there are no paid tiers or subscriptions. The framework is available on GitHub with public access to all features. The company SynaLinks (French startup founded in Toulouse 2023) offers paid consulting, development, and technical support services for companies wanting to implement neuro-symbolic systems, but the framework itself remains free.
Synalinks pros
- Open-source and free to use
- Keras 3 adaptation with familiar, user-friendly API
- Supports graph RAGs and autonomous agents
- In-context reinforcement learning optimizes each prompt
- Constrained structured output ensures format and content correctness
- Async optimization automatically detects parallel processes
- Built-in metrics and rewards for workflow evaluation
- Compatible with multiple LM providers (Ollama, OpenAI, Anthropic, Mistral, Groq)
- Integrates with Neo4J and MemGraph graph databases
- Programs serializable to JSON for Git versioning
- Out-of-the-box FastAPI and FastMCP support for REST APIs
- Compatible with KerasTuner for hyperparameter tuning
- Four programming APIs: Functional, Sequential, subclassing, and mixed
- Built-in program summary and plotting for documentation
- Logical flows inspired by logical circuits
- Comprehensive Knowledge Graph support
- Easy pipeline editing and re-training
- Progressive disclosure of complexity for learning
Synalinks cons
- Relatively new framework with no official releases yet
- Only 326 GitHub stars indicating small community
- No packages published on PyPI registry
- Requires Python programming skills
- ML/Deep Learning background advantageous for full utilization
- Limited documentation compared to established frameworks
- No pre-built templates or starters beyond init command
- Active development may have breaking changes
Frequently asked questions about Synalinks
What makes Synalinks revolutionary compared to DSPy?
While DSPy wrestles with PyTorch complexity, Synalinks delivers the elegant simplicity of Keras with enterprise-grade power. Synalinks is the only framework featuring logical flows inspired by logical circuits and comprehensive Knowledge Graph support. It transforms AI workflow design into an intuitive, natural process that accelerates development cycles and reduces implementation complexity.
Why do you focus on in-context techniques?
Most real-world company problems aren't labeled in public datasets for ML engineers, creating a big discrepancy between public benchmark results and real-world performance. Training a whole LM from scratch is out of reach for most companies, so adapting them to real-world tasks is essential. LMs can leverage their prompt to mimic examples, but selecting the best examples and instructions requires a complex system like Synalinks that automates generation and selection.
I already use structured output, why would I use Synalinks?
While structured output ensures correct format ready to parse, it doesn't guarantee the content of LM answers. Synalinks uses constrained structured output in conjunction with in-context techniques to ensure both format and content correctness.
Can Synalinks be used for non-LMs applications?
Yes. While Synalinks provides everything to work with LMs, you can create modules or entire pipelines that don't use them. Many neuro-symbolic systems use a conjunction of LM modules with non-LM modules. The Synalinks backend can suit any algorithm that works with any data structure as long as they are formalized in JSON.
What are my options for saving programs?
There are two options: 1) Whole-program saving using program.save('my_program.json') which contains the architecture, variables, training configuration, and optimizer state for resuming training. You can reload with program = synalinks.Program.load('my_program.json'). 2) Variables-only saving using program.save_variables('my_program.variables.json') to save just variables for loading into a program with the same architecture. All programs and variables are saved in JSON format (pickle was removed for security).
How to do hyperparameter tuning with Synalinks?
Synalinks is compatible with KerasTuner which allows you to find hyperparameters without guessing.
Where is the Synalinks configuration file stored?
The default directory is $HOME/.synalinks/ (Windows users should use %USERPROFILE% instead of $HOME). If Synalinks cannot create this directory due to permission issues, /tmp/.synalinks/ is used as backup. The configuration file is a JSON file at $HOME/.synalinks/synalinks.json with default settings for backend (pydantic), floatx (float32), and epsilon (1e-07). Cached datasets are stored in $HOME/.synalinks/datasets/.
How should I cite Synalinks?
Please cite Synalinks if useful for your research using this bibtex entry: @misc{sallami2025synalinks, title={Synalinks}, author={Sallami, Yoan and Chollet, François}, year={2025}, howpublished={\url{https://github.com/SynaLinks/Synalinks}}}
Do you provide help or support?
Yes. The company provides consulting, development, and technical support for companies wanting to implement neuro-symbolic systems. If you can't afford their services, you can find help in their public Discord channel. The community welcomes people from very different backgrounds and education levels.
What's the difference between the training argument in call() and the trainable attribute?
training is a boolean argument in call() that determines whether to run in inference mode or training mode. In training mode, a Generator module saves each LM prediction for later backpropagation; in inference mode it doesn't. trainable is a boolean module attribute that determines whether the module's trainable variables should be updated to maximize reward during training. If module.trainable is False, then module.trainable_variables is always an empty list. These are two very different concepts: inference vs training mode versus variable trainability.